UIViewController的视图不调整viewWillAppear()
我已经实例化一个自定义视图控制器的UINavigationController
。 它的视图包含一个button,点击后,导航控制器会将不同的自定义视图控制器的视图推送到视图中:
@IBAction func showVC(sender: AnyObject) { let vc = MyOtherViewController() navigationController?.pushViewController(vc, animated: true) }
在MyOtherViewController's
viewWillAppear()函数中,我发现视图没有resize以适应视图层次结构。
override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) print("view: \(view)") }
print()
函数的输出是:
查看:<UIView:0x7f9432719bd0; frame =(0 0; 600 600); autoresize = W + H; 层= <CALayer:0x7f9432717cc0 >>
正如你所看到的,视图的大小仍然是600 x 600
,这是.xib文件的原始大小。 我没有调整.xib视图的大小,因为视图将显示在各种iPhone和iPad显示器上。
我的困境是我需要视图的最终维度,因为我需要根据视图的宽度构造一些NSLayoutConstraints
。
调整视图的build议方法是什么? 期望视图在调用时被resize是错误的–viewWillAppear()
期望视图在调用时被resize是错误的–viewWillAppear()
是。 你可以肯定,它将被调整时间viewDidAppear
。 但是这对于你的目的来说可能太迟了。 您正在查找的事件可能是viewWillLayoutSubviews
或viewDidLayoutSubviews
。 这将在以后多次调用,所以如果此时只想执行一次修改,请使用布尔标志:
var didSetUp = false override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() if self.didSetUp { return } self.didSetUp = true // ... do stuff ... }
- FBSDKAppInvite成功,但不能在fbaccount中发送通知
- iOS Swift:UIPageViewController – 以编程方式翻页
- 在Swift中使用imagePickerController在同一视图控制器中select两个不同的图像
- 当我尝试在Xcode中重构时,会出现警告,将文件添加到此工作区中目标的构build阶段
- 我可以将一个localizable.strings文件加载到iOS应用程序中吗?
- 夏日4-程序化UINavigationBar
- 如何将版权信息添加到Nib文件?
- 代码签名错误:SDK“iOS 11.0”中的产品类型“应用程序”需要代码签名
- Xcode 4中没有外部库的符号/源代码