Ios UITableViewCell+;自动布局+;RTL

Ios UITableViewCell+;自动布局+;RTL,ios,objective-c,uitableview,localization,autolayout,Ios,Objective C,Uitableview,Localization,Autolayout,我正在将我的应用程序本地化为希伯来语,这是一种RTL语言。 每个单元格都有设置为前导/尾随的水平约束,这些约束在RTL语言上自动反转。 最终结果与预期完全一致,但在滚动表视图时,UITableViewCell子视图将从LTR到RTL设置动画,这非常奇怪 是否有防止视图设置动画的方法 例如: 在所有WWDC视频中也没有关于这一点的内容…您可以在-(void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)单元

我正在将我的应用程序本地化为希伯来语,这是一种RTL语言。
每个单元格都有设置为前导/尾随的水平约束,这些约束在RTL语言上自动反转。
最终结果与预期完全一致,但在滚动表视图时,UITableViewCell子视图将从LTR到RTL设置动画,这非常奇怪

是否有防止视图设置动画的方法

例如:


在所有WWDC视频中也没有关于这一点的内容…

您可以在-(void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)单元格中设置约束动画,用于RowatineXpath:(NSIndexPath*)indexPath,我在代码中使用了一个示例,但不设置约束动画,而是设置单元格的contentview层的变换动画

- (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;
                 }];

}

好,因此基本上,
UIView
是以
*.XIB
文件中显示的原始布局启动的,然后将布局更改为设备的本地化

第一次显示我的
UITableViewCell
s时,没有动画,它显示正确,我假设我的
UITableView
正在重用它的单元格,因为我是这样定义的,但实际上,由于另一个问题,我错误地引起了,my tableView的内容大小在滚动期间发生了更改,旧单元格没有被重用,这导致表视图在同一时间子查看20个“活动”单元格,因此每一新行只启动一个新的
UITableViewCell
,因为同时有一个方法正在执行

[UIView animateWithDuration:.2 animations:^{
    ...

    [self.view layoutIfNeeded];

    ...
}];
单元的布局也从LTR设置为RTL布局

不管怎么说,修复我的这种行为的实现解决了单元的重用问题,也解决了全局视图的布局动画导致的奇怪动画问题


希望它能帮助其他遇到类似情况的人

请添加一些示例项目链接好吗?我刚刚用
TableView
创建了一个新项目,在模拟器上添加了希伯来语本地化和更改语言。滚动后,我看不到任何动画(启用或不启用慢速动画),但视图是RTL对齐的。您是否尝试了
-tableView:cellforrowatinexpath:
中的
[UIView performwhithoutanimations:^{}]
?此单元格是否从xib加载?如果是这样,你是如何做到的?你不应该预先布局每个单元格,这听起来像是一个讨厌的解决办法。当水平滚动时,这会在UICollectionView中重现。请参见:。你可以打开bug,他们可以解决很多开发人员多次打开的bug。我已经打开了一个Bug。这是相同的工作,只是在动画块中设置约束动画