self.view = someController.view与[self.view addSubview:someController.view]

时间:2011-07-27 18:29:15

标签: iphone uiview

我正试图找出我遇到的错误。最初,我的同事刚刚使用

为子视图添加了视图
[self.view addSubview:someController.view];

来自当前的ViewController。这看起来不错,但有点迟钝。我想根据需要懒洋洋地加载视图,并使用我在这篇文章中得到的建议:How to optimize performance in view controller navigation with UISegmentedControl and UITabBarController

只需将视图设置为

,它的工作速度就会更快
self.view = someController.view

但是,视图的高度不正确。我正在尝试调试正在发生的事情,但我不确定我是否理解将新视图添加为子视图与将其设置为当前视图之间的区别。我认为将它添加到我当前的视图中,或者将其添加为子视图将占用相同的大小,但我必须遗漏一些东西。任何帮助表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:1)

self.view = someController.view,表示视图被新视图替换。这意味着新视图将具有在someController.view中设置的所有属性 将视图添加为子视图意味着新视图必须面对在父视图中设置的所有内容(从框架,大小和边距开始)。
这些方法中的每一种都有不同的含义,应该用于不同的结果 我不知道哪个是您的,但如果您只想更换替换视图的替换视图,则可以在添加或替换旧视图之前使用someController.view.frame = self.view.frame;

答案 1 :(得分:0)

AFAIK将视图添加为子视图时,父视图会查看其自动调整遮罩并相应地调整视图大小。与使用另一种根本不进行尺寸调整的视图“替换”视图本身不同。

答案 2 :(得分:0)

第一个完全用self.view取代someController.view

第二个someController.view已添加到self.view。这意味着除self.view的{​​{1}}外,frameSize将可见。

请检查Documentation