У меня есть UITableViewCell с двумя UILabels и UISwitch. Этикетки многострочные и расположены друг над другом. UISwitch центрируется по вертикали. Когда я выключаю переключатель, я скрываю одну из ярлыков, а высота строки изменяется. Это приводит к тому, переключатель прыгать, хотя я называю:Анимация подзаголовка с ограничением CentreY
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
Вот моя реализация класса tableviewcell:
- (void)setBounds:(CGRect)bounds
{
[super setBounds:bounds];
self.contentView.frame = self.bounds;
}
- (void)setUpView{
self.numberLabel.text = [NSString stringWithFormat:@"Quote number %ld", [self.cellData[@"rowNumber"] integerValue]];
[self.controlSwitch setOn:[self.cellData[@"checked"] boolValue]];
[UIView animateWithDuration:0.5 animations:^{
if ([self.controlSwitch isOn]) {
self.quoteLabel.text = self.cellData[@"quote"];
self.quoteLabel.hidden = NO;
self.bottomConst.constant = 10;
}else{
self.quoteLabel.text = @"";
self.quoteLabel.hidden = YES;
self.bottomConst.constant = 0;
}
}];
}
- (void)layoutSubviews
{
[super layoutSubviews];
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self.contentView updateConstraintsIfNeeded];
[self.contentView layoutIfNeeded];
self.numberLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.numberLabel.frame);
self.quoteLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.quoteLabel.frame);
}
- (IBAction)removeQuote:(id)sender {
[self.delegate updateCell:self];
}
настройки ограничений на UITableViewCell выглядит следующим образом.
Когда переключатель включен, я просто отобразите котировка метку и установить текст. Here - это ссылка на то, как это выглядит. Является ли это поведением по умолчанию или есть способ контролировать перемещение переключателя при анимации строки?
Это не сработало. Его ограничивающий центр на переключателе, который заставляет его прыгать – DesperateLearner