Objective-C
JavaScript
iOS
Cordova
cordova-plugin-imagepicker

cordovaのimagePicker pluginのグラフィックバグを治す

こんにちわ。

eee_nbnbです。

今回CordovaのImagepicker使う機会が合ったので導入して試してたんですけど、

悲しいことにiOSの方でラベルがずれたりプレビューの画像が大きくなったりと頭を抱えて悲しい気持ちでふて寝しました。

いわゆるバグと言うやつです。

まあ <input type="input" multiple> を使えば複数選択できるしそれでも良いかなと思ってたんですけど枚数の指定などをしたかったのでこのプラグインを使うことにしました。


とりあえずソースコードを見る

objective-cを書いたことがないしがないエンジニアでしたがswiftでiosのアプリを作ってたことがあってなんとなくiosのUIKit周りは覚えていました。


ズレるラベルたち

最初に対面したバグはUITableViewのセルを選択したときに中のラベルがずれるバグです。

47414149-928fb280-d770-11e8-815e-9ae34f927b0b.png

多分セル側の問題だろうとのことでいろいろ見てたら GMAlbumsViewCell.m がTableViewCellなのがわかりました。

setSelectedあたりが問題な気がしたのでとりあえずアニメーションを消します。


GMAlbumsViewCell.m

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

{
//[super setSelected:selected animated:animated];
// Configure the view for the selected state
}

とりあえずラベルはずれなくなったのですが今度はハイライトの時ずれるのでハイライト時のコードを付け足します。


GMAlbumsViewCell.m

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {

if( highlighted ) {
[self setBackgroundColor:[UIColor lightGrayColor]];
} else {
[self setBackgroundColor:[UIColor whiteColor]];
}
}

overrideしてすべてを無にして上書きですね。最高です。


なんか大きくなる画像達

何度か画像を選択したり外したりしてるとなんか画像が大きくなって表示が崩れます。結構地獄です。

47414567-8d7f3300-d771-11e8-9bf6-8a4e83a604aa.png

これはホントに謎過ぎてお家に帰りたくなりましたが、これはUIGridViewで作られていてどうやらまたセルが怪しい気がして GMGridViewCell.m を見ます。

- (id)initWithFrame:(CGRect)frame で何やらごちゃごちゃレイヤーを重ねていました。

リサイズされている気がしてUIImageViewにはautoresizingMasktranslatesAutoresizingMaskIntoConstraintsいうプロパティがあるのでこの辺をコメントアウトします。


GMGridViewCell.m

//_imageView.translatesAutoresizingMaskIntoConstraints = NO;

//_imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

なんかうまく行きました。なんか。


今後

もうちょいちゃんとしてからPR投げます。多分。