我在表格单元格中重新加载自定义UIView
(SBBarChart
)时遇到问题。我不使用自动布局,因为它太难以调整它可能存在或不存在的单元格的所有组件。我每次都手动计算矩形并且有效。
关于旋转,我尝试在表视图控制器中实现willRotateToInterfaceOrientation
方法,其中包含[self.tableView reloadData]
。这会在旋转后再次生成细胞。细
在单元格类的内部,我调用[self.barChart setNeedsDisplay]
以确保重新加载图表的子视图,这是有效的。
现在问题。最初,纵向视图打开并正确加载。当我旋转到风景时,这也有效。当我旋转回肖像时,条形图的长度会正确计算,但仍然显示为横向。因此,条形图的新矩形具有正确的度量,但条形图显示得太长,部分显示在屏幕之外。
正确显示(并居中)具有相同框架尺寸的标签,因此应该是重新加载条形图的问题。
我做错了什么?
答案 0 :(得分:1)
尝试检查[[UIApplication sharedApplication] statusBarOrientation]
重新加载您的tableview时,请相应地进行调整。这将给出当前的轮换状态。
答案 1 :(得分:0)
我刚刚解决了我的问题。我在代码中发现了三个主要错误。
1)从细胞中删除对照后,我正在使用dequeueReusableCellWithIdentifier
。这导致缺少控件和奇怪的行为。现在我每次从笔尖生成一个新单元格。
2)我使用的x
和y
值已从细胞中移除。我只是改为使用数值。
3)我使用frame
来确定屏幕的宽度。但是,框架不会改变。为了解决这个问题,我使用了以下主题:How to get orientation-dependent height and width of the screen?
现在,我甚至不需要行[self.barChart setNeedsDisplay]
,我可以根据需要旋转设备,控件不再移动。 :)
我仍然不确定是否必须调用reloadData
来调整布局,但我还没有找到更好的解决方案。
所以,最后它有效!非常感谢你的帮助,我希望,这篇文章能帮助别人。 :)