2013-09-24 1 views
10

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

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

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

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

ответ

2

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

[cell.contentView addSubview:imgView];

Таким образом, вы не должны даже на ум separatorInset недвижимости ,

23

iOS7 добавил separatorInset недвижимость.

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

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

Я попытался это, но безуспешно. Мой табличный вид создается с помощью построителя интерфейсов, и я попытался вставить ваш код в различные места в представлении табличного представления без успеха (viewdidload, viewwillappear и т. Д.). Я действительно не хочу попасть в подклассификацию, если я могу помочь, так что я что-то пропустил в отношении вашего метода? – skeg0

+1

Если вы используете построитель интерфейса, затем выберите представление таблицы, перейдите в Инспектор атрибутов и найдите выделение под табличным представлением с надписью «Сепараторные вставки», измените значение «По умолчанию» на «Пользовательский», а затем измените значение слева от 15 до 0. – loydbrahn

+0

, похоже, это изменение названия для вложений каждого раздела, но не внутри самой ячейки таблицы. – skeg0

1

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

tableView.SeparatorInset = UIEdgeInsets.Zero; 
+1

UIEdgeInsetsZero – Jasmeet

+0

Я не уверен, что означает этот комментарий, но я верю, что код, который я опубликовал, верен, так как в Xamarin эти свойства преобразуются в поля, поэтому их проще в использовании. Documenetation можно найти по адресу http://docs.go-mono.com/monodoc.ashx?link=T%3aMonoTouch.UIKit.UIEdgeInsets%2f* – Webmonger

+1

Я думаю, что вышеупомянутый комментарий не понимает, что такое моно. 'tableView.separatorInset = UIEdgeInsetsZero;' для obj-c 'tableView.SeparatorInset = UIEdgeInsets.Zero;' для моно! –

3

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

Проблема в том, что на сетчатке отображает, что разделитель будет иметь толщину 2px, тогда как UITableView будет иметь толщину 1px. Я обошел это ограничение, определяя логику, которая различает разрешения экрана и рисует линию 0.5px или 1px, но это не является будущим. – user3099609

3

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

-(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]; 
    } 
} 
0
override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.cellLayoutMarginsFollowReadableWidth = false 
}