UITableViewとかUICollectionViewとかがズレるとき

公開: 2015-03-04 15:22
更新: 2016-04-29 06:03

暖かいです。
もうすっかり春です。
だから今日は服を着ないで過ごそうと思います。



さて、
iPhoneアプリを作ろうとキーボード(あっきぃの数少ない友だち)を叩いているとこんなエラーが。

UITableViewとかUICollectionViewとかがズレるとき

the behavior of the UICollectionViewFlowLayout is not defined because:

the item height must be less than the height of the UICollectionView minus the section insets top and bottom values.



出ました。英語です。

(誰か早く関西弁でエラーを吐き出すプラグインを作ってください。)



どんな意味か知りませんが、

「UICollectionViewのアイテムの高さというか座標というかなんかそんな感じのがUICollectionViewの高さより小さいよ。クズめ。」

みたいなニュアンスだと思います。



状況としては、
UINavigationBarが非表示のViewControllerから、
UINavigationBarが表示されているViewController遷移する感じのところにUICollectionViewがあるって感じ。



あーこれはUINavigationBarの表示&非表示で
ScrollView系のInsetsが自動で変更してくれるような機能が備わっているのではないだろうか。そしてあっきぃに生きる資格はほぼ無いのではないだろうか。



との予想の下、
調べてみるとこんなプロパティがUIViewControllerあるのでした。

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES

このautomaticallyAdjustsScrollViewInsetsの値がデフォルトでYESなので、

きっといいタイミングでNOにすればいいのです。



とりあえずインスタンス生成時に変更しておけばいいだろうとそのUIViewControllerにこんな記述を追加。

-(instancetype)init
{
        self = [super init];
        if(self) {
                self.automaticallyAdjustsScrollViewInsets = NO;
        }
        return self;
}

結果は...





治った。





ScrollView系がズレるのは他にも色々原因があると思うので、参考の1つとしてお考えくださいまし。

ではでは。



この記事をシェア
この記事にコメントする
書き込む
あっきぃ(@appstars_aki)
Web、iOSなフリーランサーです。好きなものはお寿司です。でもお寿司は高いので普段は雑草とか拾ったドングリを食べています。お仕事や意味もなく毎月お小遣いをくれる人を探してます。

お仕事の依頼や自分で作ったアプリのレビューを希望しちゃう方はaki@appstars.jpまでご連絡ください。