【问题标题】:how do I ensure a custom UIView I have is repositioned properly after an orientation change of the iPhone如何确保我拥有的自定义 UIView 在 iPhone 的方向更改后正确重新定位
【发布时间】:2011-07-13 00:38:28
【问题描述】:

如何确保我拥有的自定义 UIView 在 iPhone 改变方向后正确重新定位?

背景

  • 作为父视图,我有一个带有 XIB 的 UIViewController
  • 我有一个自定义 UIView 用于此父级(通过 Interface Builder 插入到 XIB 中)。它在初始化时以编程方式创建一些 UIImageView 并通过“self addSubview”添加它们,然后通过“self addSubview:imageView1”类型方法定位它们

所以问题是我如何确保在方向变化时获得正确的布局。具体来说:

  1. 在哪里触发自定义 UIView 的任何此类重绘? (例如,我应该用来触发的父 UIViewController 中是否有方法?)

  2. 当触发发生时,如何请求重绘自定义 UIView?我需要像“relayoutCustomView”这样自己创建的自定义方法吗?或者我应该能够在自定义 UIView 中使用现有方法,在这种情况下,我需要确保在自定义 UIView 中我的布局代码在特定方法中?

谢谢

【问题讨论】:

    标签: iphone ios interface-builder xcode4 uiinterfaceorientation


    【解决方案1】:

    这个答案如何 - 似乎开始起作用了,不确定这是否是最好的方法:

    1. 在我的自定义视图中分离出布局代码并放入单独的方法并公开
    2. 此方法将在设置时从自定义视图“init”方法中调用
    3. 现在也可以在父级中创建一个“didRotateFromInterfaceOrientation”方法,并从这里调用 [1] 中提到的新自定义视图布局方法
    4. 注意到它必须是“didRotateFromInterfaceOrientation”,因为使用“didRotateFromInterfaceOrientation”方法它不起作用,因为 self.bounds 结果还没有改变

    这听起来怎么样?我没有在任何地方使用“setNeedsDisplay”...

    【讨论】:

    • 在你做太多事情之前,你可能只是想为你的视图和其中的项目调整大小的蒙版。如果您的视图是在 XIB 中构建的,那么很容易做到这一点并查看结果。如果是在代码中,则需要更多时间,但仍然不是很困难。
    • 所以对于我的自定义 UI 视图,我没有 XIB - 所以我认为您建议即使这样我也可以以编程方式设置和使用自动调整大小功能?这就是你的意思吗?
    • 是的。我的意思是,很难给出明确的答案,因为我不知道您查看的内容以及在调整大小时您希望它如何布局,但总的来说,自动调整大小的蒙版在布局之后会带来很多痛苦重新定位。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2012-04-09
    • 2022-01-12
    相关资源
    最近更新 更多