【问题标题】:Who moved my view?谁动了我的视线?
【发布时间】:2012-06-29 18:39:46
【问题描述】:

使用故事板,我创建了一个项目。

在viewDidLoad里面,我做到了:

NSLog(@"%@",self.view.description); 

我明白了:

<UIView: 0x8789cb0; frame = (0 20; 320 460); autoresize = RM+BM; layer = <CALayer: 0x8789d50>>

但在另一个 XXControllerDelegate 方法中,我得到了:

<UIView: 0x8789cb0; frame = (0 0; 320 416); autoresize = RM+BM; layer = <CALayer: 0x8789d50>>

如果我没有选择Resize View From NIB,我发现了事实

我总是得到: frame = (0 0; 320 416)

但我在任何地方都找不到从 NIB 调整视图的大小。谁移动了我的视图?

【问题讨论】:

    标签: iphone ios5 storyboard


    【解决方案1】:

    您的视图有RM+BM 这些锚点将能够移动视图的y 和x 位置到父视图,当viewDidLoad 被调用时superview 从xib 文件中获取它的大小,当viewWillAppear 被调用,视图将调整为 superview

    如果您希望视图不调整大小,则应删除 RM+BM,查看屏幕截图

    去除下图右中部红色横竖线

    【讨论】:

    • 谢谢。这很有帮助。嗯...为什么不是其他框架,而是frame(0 20; 320 460) 或frame = (0 0; 320 416)?
    【解决方案2】:

    UIView 的框架相对于它所在的父视图。

    UIView 的边界相对于它自己的坐标系。

    因此,您需要确定添加视图的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 2011-09-02
      • 2019-05-17
      • 2021-08-16
      相关资源
      最近更新 更多