我在试着找出我有个bug。最初,我的同事只是使用
[self.view addSubview:someController.view];从当前的ViewController。这看起来是对的,但是有点慢。我想根据需要懒惰地加载视图,并使用我在本文中获得的建议:How to optimize performance in view controller navigation with UISegmentedControl and UITabBarController
它的工作速度更快,只需将视图设置为
self.view = someController.view但是,视图的高度不正确。我正在尝试调试正在发生的事情,但我不确定是否理解将新视图作为子视图添加与将其设置为当前视图之间的区别。我会认为将其添加到我当前的视图中,或将其作为子视图添加将占据相同的大小,但我肯定遗漏了一些东西。任何帮助都是非常感谢的。谢谢!
发布于 2011-07-28 02:46:31
AFAIK将视图添加为子视图时,父视图将查看其自动调整大小蒙版,并相应地调整视图大小。就像用另一个视图“替换”视图本身一样,在另一个视图中根本不会发生大小调整。
发布于 2011-07-28 02:47:39
self.view = someController.view,表示视图被新视图替换。这意味着新视图将在someController.view中设置所有属性。
添加一个视图作为子视图意味着新的视图必须面对已经在父视图中设置好的所有内容(从框架、大小和边距开始)。
每种方法都有不同的含义,应该用于不同的结果。
发布于 2011-07-28 03:25:35
第一个用someController.view完全取代了self.view。
第二个将someController.view添加到您的self.view中。这意味着除了someController.view的frameSize之外,self.view将是可见的。
请查看Documentation 。
https://stackoverflow.com/questions/6849338
复制相似问题