UITableViewCell в ios7 теперь имеет пробелы слева и справа

У меня есть UITableView, где в ios6 моя пользовательская ячейка полностью растянулась на левую и правую стороны экрана. Таким образом, мое квадратное изображение слева от камеры было сильно против экрана телефона.

Однако теперь в ios7 есть небольшой зазор, появляющийся с левой стороны, так что изображение теперь далеко от стороны и немного перекрывает мой текст внутри ячейки.

Это также происходит в других приложениях, которые у меня есть, которые я сейчас просматриваю в ios7. У всех есть пробел слева и, возможно, право.

Моя пользовательская ячейка имеет размер 320 в соответствии с интерфейсом Builder - ios 7 не изменил это?

Ответ 1

Добавление изображения в cell.contentView устраняет проблему:

[cell.contentView addSubview:imgView];

Таким образом, вам даже не нужно иметь в виду свойство separatorInset.

Ответ 2

iOS7 добавил свойство separatorInset.

Попробуйте добавить это к своему UITableViewController:

if ([self.tableView respondsToSelector:@selector(separatorInset)]) {
    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
}

Ответ 3

Я бы предпочел сам сделать сеперов. Это кажется более простым, чем борьба с настройками таблицы. Просто установите разделителей в 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;
}

Ответ 4

Это работает идеально для меня:

-(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];
    }
}

Ответ 5

Для тех, кто использует Xamarin/MonoTouch в С#

tableView.SeparatorInset = UIEdgeInsets.Zero;

Ответ 6

 override func viewDidLoad() {
    super.viewDidLoad()

    tableView.cellLayoutMarginsFollowReadableWidth = false
 }