我调用了一个方法来计算我在自定义UITableViewCell
子类中拥有的一堆标签的大小,该子类位于UIPopoverController
. 当用户旋转设备时,我需要重新计算尺寸,然后重新绘制表格以使用新尺寸。我尝试检测旋转的每种方法要么被贬值,要么没有被调用,或者没有在正确的时间被调用。是否有一种方法可以在设备旋转时自动调用,我可以重新计算我的尺寸?
编辑:我尝试过的以及为什么它不起作用:
shouldAutorotate
- 没有被调用 - 显然已经贬值了。layoutSubviews
- 被调用,但如果我尝试[self.tableView reloadData]
在这里,我会陷入无限循环NSNotificationCenter
观察者UIDeviceOrientationDidChangeNotification
- 在我的控制器知道它是新尺寸之前被调用,所以我无法在这里重新计算我的尺寸[self.tableView setNeedsDisplay]
inlayoutSubviews
- 不提示重新绘制表格。didRotateFromInterfaceOrientation
- 没有被调用 - 显然已经贬值了。
编辑 2:有关我正在尝试做的事情的更多详细信息
我正在尝试模仿“行和列”样式表,并排列标签以模仿列。当我重新计算大小时,我会遍历表格的所有行,然后遍历该行中的每个“列”。我得到每列的宽度,并跟踪每列的所有行中的最大宽度。然后我操纵宽度和字体大小之间的间距来获取它,这样如果任何行在每一列中都有最宽的标签,它仍然可以在屏幕上显示。