2014-12-13 3 views
0

Я пытаюсь изменить положение UILabel, содержащегося внутри пользовательского UITableViewCell, но оно не перемещается. У меня включен автоматический макет.UILabel Позиция не изменяется внутри UITableviewcell

- (void)updateLayout 
{ 
    NSArray* comp = [self.accessibilityHint componentsSeparatedByString:@"/"]; 
    if (comp.count > 1) 
    { 
    CGRect rect = _imageViewT.frame; 
    rect.origin.x = 20 * comp.count; 
    rect.size.width = 44.0; 
    [_imageViewT setFrame:rect]; 
    [_imageConstraint setConstant:_imageViewT.frame.origin.x-8]; 

    rect = _lableT.frame; 
    rect.origin.x = _imageViewT.frame.size.width+_imageViewT.frame.origin.x+8; 
    rect.size.width = self.frame.size.width-rect.origin.x-40; 
    [_lableT setFrame:rect]; 
    //[_imageConstraint setConstant:_imageViewT.frame.origin.x-8]; 


} 
else 
{ 
    CGRect rect = _imageViewT.frame; 
    rect.origin.x = 10; 
    rect.size.width = 43.0; 
    [_imageViewT setFrame:rect]; 
    [_imageConstraint setConstant:2]; 

    rect = _lableT.frame; 
    rect.origin.x = 62; 
    rect.size.width = self.frame.size.width-rect.origin.x-40; 
    [_lableT setFrame:rect]; 
} 

}

Я вызываю метод обновления от cellForRowAtIndexPath. self.accessibilityHint содержат строку типа AA/бб/куб.см, аа/куб.см

ответ

1

UITableViewCell будет макет подвидов в layoutSubviews: после cellForRowAtIndexPath:, поэтому ваш макет будет сброшен в layoutSubviews клетки. Вы должны переместить свой код макета из cellForRowAtIndexPath: в layoutsubviews ячейки.

+0

Да, я сделал то же самое. Он работает нормально. Но теперь, когда я выбираю любую строку, он снова меняет позицию. Или, когда я поворачиваю свое устройство, он снова меняет положение. –

+0

Да, = layoutSubvies = будет вызываться несколько раз, если ячейка думает, что она должна сама ретранслировать, например, с измененным фреймом, setSelected :. Поэтому, если вы поместите свой код макета в layoutSubvies, вы должны убедиться, что он работает правильно все время. Возможно, вам нужно создать какое-то свойство, чтобы идентифицировать текущее состояние ячейки, тогда вы можете создать другую структуру макета для этого свойства. – MoLice

+0

Не могли бы вы сообщить мне, как я могу получить текущее состояние ячейки. –

0

Установить свойство autoresizingMask метки, я всегда использую его с подзонами ячеек.

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