繁体   English   中英

仅在iOS 8上旋转后,UITableViewCell的缩进更改

[英]Indentation of UITableViewCell changes after rotation only on iOS 8

我有一个包含三个动态行的UITableView 第一次显示UITableViewController时,一切正常。 旋转后,尽管将setLayoutMargins设置为零,但其中包含数据的行setLayoutMargins缩进。 到目前为止,我无法在另一个项目中重现此问题。 它仅出现在iOS 8中,但仅出现在一张桌子上。 该表的相同来源正在测试项目中正常工作。 唯一的区别是它位于具有其他视图的容器中。

我检查了自动布局约束,旋转方法,注释掉的东西-所有这些都没有成功。 缩进的更改发生在willRotateToInterfaceOrientationdidRotateToInterfaceOrientation之间,或者在viewWillTransitionToSize之后。 我什至更新到iOS 8.1,结果相同。

有人经历过类似的行为吗?

PS:我还注意到,在iOS 8上将布局边距设置为零时,动画不像默认值(带有缩进)那样平滑。 在iOS 7上,动画始终很流畅。

编辑:

我追踪了一些东西。 如果将UITableViewController嵌入到UINavigationController则缩进发生在旋转时。 如果进一步旋转,则返回到其设置的缩进(在我的情况下为无缩进)。

如果将UITableViewController嵌入到容器中(并且此容器在导航控制器中),则在旋转单元格之后,将获得其默认缩进。 如果进一步旋转,此行为将保持不变(始终缩进)。

是否有些事件没有发送到子视图控制器,或者您没有使用嵌入到UINavigationControllerUITableViewController

我认为这是iOS 8错误或Xamarin错误。 也许其他人可以验证其安装是否相同。 我正在将Xamarin Studio 5.5.2与Xcode 6.1一起使用。

一个丑陋的解决方案是这样的:

public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation)
{
    base.DidRotate (fromInterfaceOrientation);

    // otherwise cells are indented! iOS 8 Bug?
    TableView.ReloadData ();
}

尽管已弃用函数,但可以在didRotateFromInterfaceOrientation使用reloadDatareloadSection 但是没有viewDidTransitionToSize ,我还必须支持iOS 7。

编辑:

我想出的另一种解决方案是绘制一条自定义分隔线。 这仅适用于iOS 8,并且可以回答问题(尽管我在iOS 7上遇到了另一个问题,这种方法无济于事)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM