我有iphone和ipad的通用应用程序,两个故事板,如果我在iphone模拟器上运行我的应用程序viewDidLoad在nib中的每个元素的每个帧是正确的.但是,如果我为ipad(模拟器)在框架中做它为零,但屏幕看起来正确.你能告诉我什么吗?谢谢.
我尝试移植我的应用程序iOS7,但我的自定义TableViewController显示在下面的最后一行(单元格)TabBar:(
我正在寻找它,但我没有找到任何解决方案.谁能帮我?
该错误显示在打击屏幕截图中(仅显示最后一个产品的一部分,因为我正在向上展示以显示标签栏下的隐藏产品):

谢谢.
好的,这有点奇怪。我已经开发iOS应用程序已有一段时间了,并且一直认为这viewDidLoad是使用视图框架的不正确地方。
但是,在我要解决一些错误的一个应用程序中,似乎实际上已正确设置了框架viewDidLoad!
情节提要使用的是“ View as:iPhone 7”,因此我希望该框架的宽度为375px viewDidLoad。我使用的是普通的推播功能。
但是,宽度实际上已正确设置为当前设备的屏幕宽度。我正在使用模拟器。
我想念什么?viewDidLoad如今我们可以使用宽度进行计算吗?
虽然它很简单,但我仍然发现自己正在努力解决正确的问题.
我试图了解在使用自动布局时,在内部找到REAL(或任何其他子视图)帧的正确方法是什么. UIViewviewDidLoad
主要问题是在viewDidLoad中,视图未应用其约束.我知道这种情况的"已知"答案是
override func viewDidLoad() {
super.viewDidLoad()
view.layoutIfNeeded()
stepContainer.layoutIfNeeded() // We need this Subview real frame!
let realFrame = stepContainer.frame
}
Run Code Online (Sandbox Code Playgroud)
但我发现它并不总是有效,并且不时会给出错误的帧(即不是显示的最终帧).
经过一番研究后,我发现歪曲这段代码可以DispatchQueue.main.async { }得到准确的结果.但是我不确定这是否是正确的处理方法,或者我是否使用此方法导致了一些引擎盖下的问题.最终"工作"代码:
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
self. stepContainer.layoutIfNeeded()
print(self. stepContainer.frame) // Real frame..
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我只需要从viewDidLoad中找到真正的帧,请不要建议使用viewDidAppear/layoutSubviews等.
我有一个简单的问题,当我将视图控制器设置为自由形式时,如何以编程方式找到视图控制器的高度?
我想做类似的事情:
let viewControllerHeight = viewController.contentSize.height
Run Code Online (Sandbox Code Playgroud)

另外,如何在没有链接的情况下在此处发布图像?
我创建UITabBarController了每个选项卡包含UINavigationController并设置了rootviewcontroller UINavigationController,所有这些都在界面构建器中完成.在viewDidLoad中,我尝试从视图中获取帧大小,但是当我引用视图时,它返回null.以前有没有人经历过这个.
所有IBoutlet都已正确连接.
ios ×5
nib ×2
swift ×2
uiview ×2
autolayout ×1
ios7 ×1
ipad ×1
objective-c ×1
storyboard ×1
tableview ×1
view ×1
viewdidload ×1