去除布局时的隐式动画效果

在布局UITableViewCell子试图时,如果在layoutSubviews中处理布局,当项目运行时我们经常会看到cell上面的控件在动,这也就是标题所说的隐式动画。虽然说动态效果更能够吸引人,但有时候并非我们所要,那我们应该怎样解决这个问题呢?

解决方法代码示例如下:

swift版:

1
2
3
4
5
6
7
8
9
override func layoutSubviews() {
super.layoutSubviews()
CATransaction.begin()
CATransaction.setValue(kCFBooleanTrue, forKey: kCATransactionDisableActions)
/*******************/
// 在这里书写布局的代码
/*******************/
CATransaction.commit()
}

OC版:

1
2
3
4
5
6
7
8
9
10
- (void)layoutSubviews
{
[super layoutSubviews];
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
/*******************/
// 在这里书写布局的代码
/*******************/
[CATransaction commit];
}

从上面的方法可以看出,只需要在布局的代码前面加上CATransaction.begin()CATransaction.setValue(kCFBooleanTrue, forKey: kCATransactionDisableActions),后面加上CATransaction.commit()就可以解决这个问题了。


原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0