使用AutoLayout和UITableView的动画大小时,避免使用UITableViewCell内容的动画

时间:2015-01-16 14:18:45

标签: uitableview animation ios8 autolayout

最初我有一个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:

enter image description here

动画期间的TableView(在其中间带有黑色右侧标签,向右移动):

enter image description here

1 个答案:

答案 0 :(得分:0)

以下代码适用于swift。我已经在detailTextLabel中添加了第二个标签,并在TableView的属性检查器中添加了我选择样式为“Right Detail”的样式。我已经使用属性检查器附加了tableview的屏幕截图。

enter image description here

enter image description here

 cell.textLabel!.text = arrayLabel[indexPath.row]
 cell.detailTextLabel!.text = cntarray[indexPath.row]

希望它对你有帮助。