我有一个带有两个UILabel和一个UISwitch的UITableViewCell。标签是多线的并且彼此叠置。 UISwitch垂直居中。当我关闭开关时,我隐藏了其中一个标签,并且行的高度发生了变化。这会导致开关在我调用时跳转:
[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是关于它的样子的链接。这是默认行为还是有一种方法可以在行动画时控制开关的移动?
答案 0 :(得分:0)
试试这个:
...
[self.contentView updateConstraintsIfNeeded];
[UIView beginAnimations:nil context:nil];
[self.contentView layoutIfNeeded];
[UIView commitAnimations];
...