最初我有一个UITableView,它只占用屏幕的一小部分,使用AutoLayout约束。 UITableViewCells布局很好 - 它们非常基本,只有橙色左对齐标签和黑色右对齐标签。
现在,如果我向上滑动UITableView,它会动画(AutoLayout约束),占据屏幕的大部分,同时重新加载表格并将其他UITableViewCells带入场景。
我的问题是,新UITableViewCells的布局是动画的,同时调整了UITableView的大小。黑色右侧标签出现在橙色标签后面,并向右侧动画。最后,所有内容都按照预期排列,只有我无法弄清楚为什么黑色右边标签在单元格出现在屏幕上时不会简单地定位到最右边,而是动画到位置。
有没有办法告诉UITableViewCell根据UITableView的宽度和指定的AutoLayout约束立即布局它的内容,从而绕过UITableViewCell内容的动画?
我创建UITableViewCell的代码如下所示:
- (instancetype)init
{
self = [super init];
if (self) {
self.textLabel = [[UILabel alloc]init];
self.textLabel.translatesAutoresizingMaskIntoConstraints = NO;
self.textLabel.font = [UIFont boldSystemFontOfSize:16.0];
self.textLabel.textColor = [UIColor orangeColor];
[self.contentView addSubview:self.textLabel];
self.amountLabel = [[UILabel alloc]init];
self.amountLabel.translatesAutoresizingMaskIntoConstraints = NO;
self.amountLabel.textAlignment = NSTextAlignmentRight;
self.amountLabel.font = [UIFont boldSystemFontOfSize:16.0];
[self.contentView addSubview:self.amountLabel];
NSDictionary *views = @{@"textLabel": self.textLabel, @"amountLabel": self.amountLabel};
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-10-[textLabel]-10-[amountLabel]-10-|" options:0 metrics:nil views:views]];
}
return self;
}
动画前的初始TableView:
动画期间的TableView(在其中间带有黑色右侧标签,向右移动):