我正在将我的应用程序本地化为希伯来语,这是一种RTL语言。
每个单元格的水平约束设置为前导/尾随,在RTL语言中会自动反转。
最终结果与预期完全相同,但是当滚动表视图时,UITableViewCell子视图是将从LTR动画到RTL,这是非常奇怪的。
是否有防止视图动画的工作?
示例:

在所有WWDC的视频里也没有这个词..。
发布于 2014-08-20 09:41:40
您只需在- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)单元格forRowAtIndexPath:(NSIndexPath *)indexPath中动画该约束,我在代码中使用了一个示例,但没有动画约束,而是动画单元格的内容视图层转换
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
UIView *contentView = cell.contentView;
contentView.layer.opacity = 0.0;
contentView.layer.transform = CATransform3DMakeScale(0.2, 2, 0.3);
[UIView animateWithDuration:0.5
animations:^{
contentView.layer.opacity = 1;
contentView.layer.transform = CATransform3DIdentity;
}];}
发布于 2014-08-21 08:03:11
好的,基本上UIView是以*.XIB文件上显示的原始布局启动的,然后将布局更改为设备的本地化。
第一次显示我的UITableViewCell时,没有动画,也没有正确显示,我假设我的UITableView正在重用它的单元格,因为这就是我定义它的方式,但实际上,由于我错误地引起的另一个问题,在滚动过程中更改了我的tableView的内容大小,旧的单元格没有被重用,是什么原因导致了20个“活动”单元格在同一时间被表视图细分,所以每一行只是启动了一个新的UITableViewCell,并且因为在同一时间有一个方法执行
[UIView animateWithDuration:.2 animations:^{
...
[self.view layoutIfNeeded];
...
}];单元格的布局也从LTR动画到RTL布局。
无论如何,修复这种行为的实现解决了单元格的重用问题,也解决了全局视图布局动画引起的奇怪动画问题。
希望它能帮助其他遇到类似事情的人。
https://stackoverflow.com/questions/25257848
复制相似问题