我对这个感到困惑。
我正在尝试以编程方式调整一些UI元素的大小......
元素的大小基于父视图的大小(这里是详细视图)。 (我不想使用autosize-mask,因为我无法得到我想要的结果)
在横向模式下运行时,在UIViewDidAppear
中读取当前视图的帧大小,我得到的大小总是1024像素宽,显然不会出现所有内容(它将是1024减去根控制器的宽度(320像素)= 704像素宽)
在什么时候,我应该在哪里重新调整视图大小,以便我可以准确地读取帧大小。
显然我希望在视图生命周期中尽早做到这一点,并且如果可能的话,在绘制任何内容之前,用户将不会看到我正在调整对象的大小。
理想情况下,我想知道是否有一个特定的函数被调用(类似于UIViewWillAppear
),我可以放入我的代码。
谢谢
答案 0 :(得分:2)
您正在寻找- (void)layoutSubViews
看到此问题:When is layoutSubviews called?
答案 1 :(得分:0)
通常,从调用UIViewDidAppear开始,所有内容都已调整为正常。 但是,当您使用从UITabBarController启动的UISplitViewController时,不会像您期望的那样调用消息UIViewDidAppear。
iOS 4及更早版本不支持此情况。 Apple的UI指南要求每个屏幕只有一个UIView控制器(UISplitViewController和UITabBarController除外)。 从iOS 5看起来,这种情况将得到支持。