我正在尝试使用新的汽车尺寸作为我的桌面视图。我在做这个:
tableView.rowHeight = UITableViewAutomaticDimension我在我的UITableViewCell中有一个多行的-uilabel,带有一些约束,这些约束非常出色;当我在风景和肖像中输入桌面视图时,行的高度是动态的!太棒了!
..。但是当我旋转设备时,行得到基本的高度(即44)。
我添加了这一行:
override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval)
{
self.tableView.reloadData()
}问题就消失了。但这真的有必要吗?一定有更好的方法来解决这个问题吗?
编辑:
我刚刚发现,在删除表视图中的一行时,也会出现同样的问题,如下所示:
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)我是不是漏掉了什么?为什么不开箱而动呢?
再次编辑:
我现在是这样做的:
self.tableView.estimatedRowHeight = 44
tableView.rowHeight = UITableViewAutomaticDimension然后,当从API获取数据时:
self.tableView.reloadData()
self.tableView.beginUpdates()
self.tableView.endUpdates()这似乎涵盖了所有的情况,我已经测试到,但它似乎真的很麻烦!如果没有开始/结束更新,单元在第一次加载时就会显示出一些非常奇怪的高度。(但当旋转设备时,电池会正确地调整高度。)
这一切看起来都太没劲了。我还没有找到一本正确涵盖这些案例的指南。
发布于 2014-11-26 12:33:25
我有一个类似的问题,旋转,其中整个搜索栏和tableView被移动-在非常旋转从肖像到景观和背部。参见->在旋转期间,在searchBar之后,Swift searchBar与tableView顶部分离:
旋转过程中快速searchBar与tableView顶部的searchController.active分离
我粘贴了您的覆盖功能,即:
override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval)
{
self.tableView.reloadData()
}在viewDidLoad函数和我的问题消失之后。不知道为什么。格伦·蒂斯曼
发布于 2014-11-07 17:31:44
根据今年以来的WWDC会话,如果单元已经使用了Autolayout,那么它应该会自动调整大小。它会尝试调用systemLayoutSizeFittingSize:(CGSize),或者如果您没有使用autolayout,它将尝试调用sizeThatFits:(CGSize)。
如果您也支持iOS7,需要确定的是设置tableView.rowHeight和tableView.estimatedRowHeight会导致奇怪的行为,您可能希望有条件地调用其中一个,但不是两者都调用,这取决于应用程序运行的是哪个版本的iOS。
如果您对标签有问题,您还可以检查是否正在为UILabel使用新的“自动首选最大布局宽度”属性(如果您在故事板中,这是在“属性”检查器下),并且lines设置为'0‘。有关更多细节,请参见文献资料。还请参阅iOS接口目录中的“标签行为”,以获得一些关于混合UILabel某些行为和获得奇怪结果的警告。
最后,您可能会看到新添加的尺寸类的旋转方法中发生了什么
-willTransitionToSize:withTransitionCoordinator: -willTransitionToTraitCollection:withTransitionCoordinator:
https://stackoverflow.com/questions/26676755
复制相似问题