我有一个方法我请计算在自定义UITableViewCell
子类,这是在一个UIPopoverController
我有一堆标签的大小。当用户旋转设备时,我需要重新计算尺寸,然后重新绘制表格以使用新的尺寸。我尝试检测轮换的每种方法都是折旧的,不会被调用,或者在正确的时间没有被调用。是否有一种方法会在设备旋转时自动调用,我可以重新计算尺寸?重新计算子视图的尺寸在IOS 7
编辑:我已经试过,为什么它不工作:
shouldAutorotate
- 不会被调用 - 显然贬值。layoutSubviews
- 被调用,但如果我尝试[self.tableView reloadData]
在这里,我就会陷入无限循环NSNotificationCenter
观察员UIDeviceOrientationDidChangeNotification
- 天黑之前我控制器知道它是新的维度调用,所以我不能在这里重新计算我的尺寸[self.tableView setNeedsDisplay]
inlayoutSubviews
- 不提示重新绘制表格。didRotateFromInterfaceOrientation
- 不会被调用 - 显然贬值。
编辑2:我想要做
我试图模仿“行和柱”样式表,排队的标签,以模仿更多细节列。当我重新计算大小时,我遍历表中的所有行,然后遍历该行中的每个“列”。我得到每列的宽度,并跟踪每列中所有行的最大宽度。然后我操作宽度和字体大小之间的间距来获得它,这样,如果任何行在每列中都有最宽的标签,它仍然适合在屏幕上。
layoutSubviews? – ChrisH
介意分享您尝试过哪些方法? shouldAutorotate已弃用。 –
@ChrisH:我可以把它放在那里,但如果我尝试'[self.tableView reloadTable];'那里,我陷入了一个无限循环。 – GeneralMike