2015-06-14 4 views
0

У меня есть 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 выглядит следующим образом.

enter image description here

Когда переключатель включен, я просто отобразите котировка метку и установить текст. Here - это ссылка на то, как это выглядит. Является ли это поведением по умолчанию или есть способ контролировать перемещение переключателя при анимации строки?

ответ

0

Попробуйте это:

... 
[self.contentView updateConstraintsIfNeeded]; 

[UIView beginAnimations:nil context:nil]; 
[self.contentView layoutIfNeeded]; 
[UIView commitAnimations]; 
... 
+0

Это не сработало. Его ограничивающий центр на переключателе, который заставляет его прыгать – DesperateLearner