[英]UITableViewCell actions in iOS 11 after device rotation are broken
[英]Indentation of UITableViewCell changes after rotation only on iOS 8
我有一个包含三个动态行的UITableView
。 第一次显示UITableViewController
时,一切正常。 旋转后,尽管将setLayoutMargins
设置为零,但其中包含数据的行setLayoutMargins
缩进。 到目前为止,我无法在另一个项目中重现此问题。 它仅出现在iOS 8中,但仅出现在一张桌子上。 该表的相同来源正在测试项目中正常工作。 唯一的区别是它位于具有其他视图的容器中。
我检查了自动布局约束,旋转方法,注释掉的东西-所有这些都没有成功。 缩进的更改发生在willRotateToInterfaceOrientation
和didRotateToInterfaceOrientation
之间,或者在viewWillTransitionToSize
之后。 我什至更新到iOS 8.1,结果相同。
有人经历过类似的行为吗?
PS:我还注意到,在iOS 8上将布局边距设置为零时,动画不像默认值(带有缩进)那样平滑。 在iOS 7上,动画始终很流畅。
编辑:
我追踪了一些东西。 如果将UITableViewController
嵌入到UINavigationController
则缩进发生在旋转时。 如果进一步旋转,则返回到其设置的缩进(在我的情况下为无缩进)。
如果将UITableViewController
嵌入到容器中(并且此容器在导航控制器中),则在旋转单元格之后,将获得其默认缩进。 如果进一步旋转,此行为将保持不变(始终缩进)。
是否有些事件没有发送到子视图控制器,或者您没有使用嵌入到UINavigationController
的UITableViewController
?
我认为这是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
使用reloadData
或reloadSection
。 但是没有viewDidTransitionToSize
,我还必须支持iOS 7。
编辑:
我想出的另一种解决方案是绘制一条自定义分隔线。 这仅适用于iOS 8,并且可以回答问题(尽管我在iOS 7上遇到了另一个问题,这种方法无济于事)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.