NSBlogger

意識高いブログ

iOS7以降でUITableViewCellをカスタマイズするときに気をつけること

iOS7以降のUITableViewCell

UITableViewのセル単体を管理するためにUITableViewCellを使います。iOS7以降になると標準のUITableViewCellの左端に微妙な隙間ができました。UITableViewCellをカスタマイズせずにそのまま使う場合は問題ありませんが、カスタマイズする場合はこの点に気をつける必要があります。

iPhone 6での隙間

f:id:Kamekiti:20150418225820j:plain
8pxでした。iPhone5sもたしか同じ。

iPhone 6 Plusでの隙間

f:id:Kamekiti:20150418225901j:plain
12pxでした。微妙にでかい。

この隙間を埋めないとカスタマイズしたときに困る

UITableViewCellをカスタマイズしたときに、contentViewの場所が微妙にずれることがありました。まさに上記の隙間が原因で、iPhone 6iPhone 6 Plusで数ピクセルずれていてデザインの修正時に困りました。contentViewの上に1枚UIViewを置いて、さらにdrawRect:で線を描いたり背景色を塗っていたりしていたのでなおさら気づくのに時間がかかりました。

隙間問題を回避する

- (UIEdgeInsets)layoutMargins{
    return UIEdgeInsetsZero;
}

カスタマイズするセル内で上記を呼び出せば、隙間が詰まります。これで端末による微妙なずれに悩まされることがなくなります。カスタマイズしきった後に気づくのは困難なので、最初に設定しておきたいですね。