旋转后查看重新加载不正确

时间:2013-04-25 15:50:16

标签: iphone ios objective-c landscape-portrait screen-rotation

我在表格单元格中重新加载自定义UIViewSBBarChart)时遇到问题。我不使用自动布局,因为它太难以调整它可能存在或不存在的单元格的所有组件。我每次都手动计算矩形并且有效。

关于旋转,我尝试在表视图控制器中实现willRotateToInterfaceOrientation方法,其中包含[self.tableView reloadData]。这会在旋转后再次生成细胞。细

在单元格类的内部,我调用[self.barChart setNeedsDisplay]以确保重新加载图表的子视图,这是有效的。

现在问题。最初,纵向视图打开并正确加载。当我旋转到风景时,这也有效。当我旋转回肖像时,条形图的长度会正确计算,但仍然显示为横向。因此,条形图的新矩形具有正确的度量,但条形图显示得太长,部分显示在屏幕之外。

正确显示(并居中)具有相同框架尺寸的标签,因此应该是重新加载条形图的问题。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试检查[[UIApplication sharedApplication] statusBarOrientation]

重新加载您的tableview时,请相应地进行调整。这将给出当前的轮换状态。

答案 1 :(得分:0)

我刚刚解决了我的问题。我在代码中发现了三个主要错误。

1)从细胞中删除对照后,我正在使用dequeueReusableCellWithIdentifier。这导致缺少控件和奇怪的行为。现在我每次从笔尖生成一个新单元格。

2)我使用的xy值已从细胞中移除。我只是改为使用数值。

3)我使用frame来确定屏幕的宽度。但是,框架不会改变。为了解决这个问题,我使用了以下主题:How to get orientation-dependent height and width of the screen?

现在,我甚至不需要行[self.barChart setNeedsDisplay],我可以根据需要旋转设备,控件不再移动。 :)

我仍然不确定是否必须调用reloadData来调整布局,但我还没有找到更好的解决方案。

所以,最后它有效!非常感谢你的帮助,我希望,这篇文章能帮助别人。 :)