Я пытаюсь изменить положение 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/бб/куб.см, аа/куб.см
Да, я сделал то же самое. Он работает нормально. Но теперь, когда я выбираю любую строку, он снова меняет позицию. Или, когда я поворачиваю свое устройство, он снова меняет положение. –
Да, = layoutSubvies = будет вызываться несколько раз, если ячейка думает, что она должна сама ретранслировать, например, с измененным фреймом, setSelected :. Поэтому, если вы поместите свой код макета в layoutSubvies, вы должны убедиться, что он работает правильно все время. Возможно, вам нужно создать какое-то свойство, чтобы идентифицировать текущее состояние ячейки, тогда вы можете создать другую структуру макета для этого свойства. – MoLice
Не могли бы вы сообщить мне, как я могу получить текущее состояние ячейки. –