2013-02-13 3 views
0

Я работаю над созданием iOS6 в Xcode (новейшая версия), а в Interface Builder я создал пользовательскую ячейку с несколькими ярлыками. Я хочу, чтобы метки были «отступом», а не закрывались символом удаления слева, а справа - символом «изменить порядок ячеек». В IB я заметил, что флажок IS проверен, говоря, что Indent While Editing также установлен в 10, и по какой-то причине это все равно не сработает? Нужно ли теперь перетаскивать «содержимое» на холст? Я думал, что это было из коробки. Также я не могу изменить высоту моей ячейки, хотя это вариант и в IB. Может ли это быть из-за новой системы Auto Layout? Я знаю, что у меня есть фон ячейки, потому что я немного меняю цвет каждой другой ячейки, когда я их создаю. Я также изменил цвет выделения на серый внутри IB, и это тоже работает.СтоликViewCell «НЕ будет» отступ в режиме редактирования?

Я искал вокруг, и все спрашивают, «как остановить его от отступов». Я хочу, чтобы это произошло, а его нет.

Любые мысли?

ответ

0

Сотовый отступы не работают из коробки при использовании автоспуска. См. Вопрос this.

0

Проблема заключается в ошибке в AutoLayout, где системное левое горизонтальное ограничение связано между меткой и представлением ячейки, в отличие от contentView соты. Возможно, это было исправлено в XCode 5.

Многие люди, похоже, говорят, что отключение AutoLayout является ответом, но затем вы теряете все преимущества AutoLayout, чтобы исправить отступы одной пользовательской ячейки. На самом деле это довольно легко фиксируется четырьмя строками кода (и двумя IBOutlet s, одним из которых вы, вероятно, уже есть);

  1. Создать IBOutlet как для вашей этикетки и левой стороны горизонтального ограничения по CTRL-перетаскивание от каждого из них в Interface Builder в файл заголовок вашего UITableViewCell подкласса, называя их «label» и «leftHorizontalConstraint» (в соответствует коду ниже, или использовать свои собственные имена и изменить код

  2. В вашем подклассе UITableViewCell overide awakeFromNib и добавить этот код;.


    // Remove the constraint that you can't delete in IB (XCode 4) 
    [self removeConstraint:self.leftHorizontalConstraint]; 

    //Create a dictionary of variable name bindings 
    NSDictionary *labelDict = NSDictionaryOfVariableBindings(_label); 

    //Create a horizontal constraint for the label, 20 points from the left edge of its container 
    NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-20-[_label]" options:0 metrics:nil views:labelDict]; 

    //Add the constraint to the containerView 
    [self.contentView addConstraints:constraints]; 

Конечно, было бы намного проще, если бы IB сгенерировала ограничение между меткой и контейнером в первую очередь. Это мое исправление в XCode 5, но я его не тестировал. По крайней мере, вы должны удалить ограничение вручную, используя XCode 5, так как теперь IB позволяет удалять сгенерированные системой ограничения.

Смежные вопросы