UITableView'in ayırıcı iç kısmının özel değerlere ayarlandığı bir uygulamam var - Sağ
0, Sol
0. Bu
iOS 7.xte mükemmel çalışıyor, ancak
iOS 8.0da ayırıcı iç kısmının sağda varsayılan
15olarak ayarlandığını görüyorum. Xib dosyalarında
0` olarak ayarlanmış olsa da, yine de yanlış görünüyor.
UITableViewCell` ayırıcı kenar boşluklarını nasıl kaldırabilirim?
Arg!!! Etrafta oynadıktan sonra bunu Cell
alt sınıfınızda yapın:
- (UIEdgeInsets)layoutMargins
{
return UIEdgeInsetsZero;
}
veya cell.layoutMargins = UIEdgeInsetsZero;
ayarını yapmak benim için sorunu çözdü.
Sanırım bu, burada sorduğum sorunun aynısı: https://stackoverflow.com/questions/25762723/remove-separatorinset-on-ios-8-uitableview-for-xcode-6-iphone-simulator
iOS 8**'de, UIView'den miras alınan tüm nesneler için yeni bir özellik vardır. Bu nedenle, iOS 7.x'te
SeparatorInset` ayarlama çözümü, iOS 8'de UITableView üzerinde gördüğünüz beyaz alanı kaldıramayacaktır.
Yeni özelliğe "layoutMargins" adı verilir.
@property(nonatomic) UIEdgeInsets layoutMargins
Description The default spacing to use when laying out content in the view.
Availability iOS (8.0 and later)
Declared In UIView.h
Reference UIView Class Reference
Çözüm:-
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[tableView setLayoutMargins:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
Eğer layoutMargins'in var olup olmadığını kontrol etmeden
cell.layoutMargins = UIEdgeInsetsZero;ayarını yaparsanız, uygulama iOS 7.x'te çökecektir. Bu nedenle, en iyi yol
setLayoutMargins:UIEdgeInsetsZero'dan önce `layoutMargins'in var olup olmadığını kontrol etmek olacaktır.
Swift'te bu biraz daha can sıkıcıdır çünkü `layoutMargins' bir özelliktir, bu nedenle getter ve setter'ı geçersiz kılmanız gerekir.
override var layoutMargins: UIEdgeInsets {
get { return UIEdgeInsetsZero }
set(newVal) {}
}
Bu, `layoutMargins'i etkin bir şekilde salt okunur hale getirecektir, ki bu benim durumumda iyidir.