UITableView
に追加されたセルが左にインデントされることがあるという奇妙な動作に遭遇しました。これは iOS 8.3 でのみ発生し、いつ発生するかについて明確なパターンを見つけることができません。
同じことを経験した人はいますか?
UITableView
に追加されたセルが左にインデントされることがあるという奇妙な動作に遭遇しました。これは iOS 8.3 でのみ発生し、いつ発生するかについて明確なパターンを見つけることができません。
同じことを経験した人はいますか?
私の tableViewCells は、iOS 8.3 で実行すると、以前のバージョンでは見られなかった左右の余白が増加していました。
設定:
self.contentView.preservesSuperviewLayoutMargins = NO;
問題を修正し、すべてのバージョンでマージンを一定に保ちましたが、これは iOS 8 以降でのみ利用できることに注意してください。
したがって、たとえば、これを行う場所は次のとおりです。
- (void)awakeFromNib {
if ([self.contentView respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
self.contentView.preservesSuperviewLayoutMargins = NO;
}
}
うーん、これは奇妙だ...
UITableViewCellContentView
のcontentView
は、それ自体と一致しない場合があるようですUITableViewCellContentView
。これUITableView
は、それ自体が画面よりも広いレイアウトの一部である場合に発生します (水平ページャーの場合など)。
幸いなことに、解決策は簡単です。制約を追加して、contentView
をその親に合わせます。contentView
レイアウト エディタで の制約を編集できないため、これはプログラムでのみ行うことができます。
- (void)awakeFromNib {
// Initialization code
// iOS 8.3 bug, where contentView's x position isnt aligned with self's x position...
// So we add a constraint to do the obvious...
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
}
これは iOS 8.3 でのみ発生し始めましたが、修正は安全で、以前のバージョンとの下位互換性があるようです。
いつものように、あなた自身の経験をコメントしてください。
layoutMarginsプロパティが原因のようです。制約の2番目の項目「マージンに相対的」のチェックを外しましたが、すべてうまくいきました。記事はこちら。
これは私のために修正されました。アウトレットに再接続されたとプロパティUITableViewCell
の使用をやめました。imageView
textLabel