Ответ 1
Добавление изображения в cell.contentView
устраняет проблему:
[cell.contentView addSubview:imgView];
Таким образом, вам даже не нужно иметь в виду свойство separatorInset
.
У меня есть UITableView, где в ios6 моя пользовательская ячейка полностью растянулась на левую и правую стороны экрана. Таким образом, мое квадратное изображение слева от камеры было сильно против экрана телефона.
Однако теперь в ios7 есть небольшой зазор, появляющийся с левой стороны, так что изображение теперь далеко от стороны и немного перекрывает мой текст внутри ячейки.
Это также происходит в других приложениях, которые у меня есть, которые я сейчас просматриваю в ios7. У всех есть пробел слева и, возможно, право.
Моя пользовательская ячейка имеет размер 320 в соответствии с интерфейсом Builder - ios 7 не изменил это?
Добавление изображения в cell.contentView
устраняет проблему:
[cell.contentView addSubview:imgView];
Таким образом, вам даже не нужно иметь в виду свойство separatorInset
.
iOS7 добавил свойство separatorInset
.
Попробуйте добавить это к своему UITableViewController
:
if ([self.tableView respondsToSelector:@selector(separatorInset)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
Я бы предпочел сам сделать сеперов. Это кажется более простым, чем борьба с настройками таблицы. Просто установите разделителей в none, подклассифицируйте свои ячейки и сделайте это в init.
-(id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if(self){
UIView *seperator = [[UIView alloc] init];
[seperator setBackgroundColor:[UIColor blackColor]];
seperator.frame = CGRectMake(0, self.bounds.size.height-1, self.bounds.size.width, 1);
[seperator setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth];
[self.contentView addSubview:seperator];
}
return self;
}
Это работает идеально для меня:
-(void)viewDidLayoutSubviews
{
if ([self.Video_TableVIEW respondsToSelector:@selector(setSeparatorInset:)]) {
[self.Video_TableVIEW setSeparatorInset:UIEdgeInsetsZero];
}
if ([self.Video_TableVIEW respondsToSelector:@selector(setLayoutMargins:)]) {
[self.Video_TableVIEW setLayoutMargins:UIEdgeInsetsZero];
}
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
Для тех, кто использует Xamarin/MonoTouch в С#
tableView.SeparatorInset = UIEdgeInsets.Zero;
override func viewDidLoad() {
super.viewDidLoad()
tableView.cellLayoutMarginsFollowReadableWidth = false
}