【问题标题】:self.view = someController.view versus [self.view addSubview:someController.view]self.view = someController.view 与 [self.view addSubview:someController.view]
【发布时间】:2011-10-14 12:40:32
【问题描述】:

我正在尝试找出我遇到的错误。最初,我的同事只是使用

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

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

只需将视图设置为这样,它确实可以更快地工作

self.view = someController.view

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

【问题讨论】:

    标签: iphone uiview


    【解决方案1】:

    第一个完全用someController.view替换self.view

    第二个已将someController.view 添加到您的self.view。这意味着除了someController.viewframeSize 之外,self.view 将可见。

    请查看Documentation

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        当视图被添加为子视图时,父视图会查看其自动调整大小的掩码并相应地调整视图大小。与将视图本身“替换”为根本不进行大小调整的另一个视图不同。

        【讨论】:

          猜你喜欢
          • 2010-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-03
          • 1970-01-01
          • 2014-07-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多