[iOS] iOS8でUITableViewのself.tableView.separatorInset = UIEdgeInsetsZeroが効かないときの治療法(対処法)
iOS8におけるUITableViewの区切り線の話です。
いつものように「self.tableView.separatorInset = UIEdgeInsetsZero」と指定してみると、、、
あれ?「self.tableView.separatorInset = UIEdgeInsetsZero」と指定してもUITableViewの境界線が端まで描画されないぞ?ということで調べてみたら、どうやらiOS8からは次の指定方法に替わったようです。
[code]
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
[…]
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
cell.layoutMargins = UIEdgeInsetsZero;
}
return cell;
}
– (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[…]
if ([self.myTableView respondsToSelector:@selector(setLayoutMargins:)]) {
self.myTableView.layoutMargins = UIEdgeInsetsZero;
}
}
[/code]
※iOS7など下位のiOSでも動くようにrespondsToSelectorをかますことに注意。
※@selector(setLayoutMargins:)であることに注意。コードの可読性を求めるなら「[self.myTableView setLayoutMargins:UIEdgeInsetsZero]」って書いてね。
この方法、stackoverflowにも対応が載っているのですが、stackoverflowってUIがわかりにくいので、注意して見ないとと本当のことがよくわからなかったりするんですよね。voteが高いのが正解でないこともよくあるし(defaultがvote順で並んでいるのがよくない)、コメントに一番重要なことが書いてある場合も有るし。。。と思って、新たにここに記載しておきます。
http://stackoverflow.com/questions/25128117/ios-8-setting-setseparatorinset-to-zero
では。