【问题标题】:Objective C: Adaptive Toolbar On Orientation Change目标 C:关于方向变化的自适应工具栏
【发布时间】:2011-11-17 01:35:29
【问题描述】:

当我更改 iPad 的方向时,我的工具栏出现问题。

我将我的 nib 文件设置为横向,一切都很好,但是当我把它变成纵向时,我的工具栏仍然具有横向的宽度。

如何使我的工具栏适应纵向的方向变化?

风景:

肖像:

谢谢!

【问题讨论】:

    标签: objective-c ios xcode ipad uitoolbar


    【解决方案1】:

    尝试将UIViewAutoresizingFlexibleWidth 添加到工具栏autoresizingMask,如下所示:

    myToolbar.autoresizingMask |= UIViewAutoresizingFlexibleWidth
    

    或者,如果您在 Interface Builder 中执行此操作,请确保选中此水平条(也可以选择其他水平条,这很好):

    更多来自UIView Class ReferenceautoresizingMask

    当视图的边界发生变化时,该视图会自动调整其大小 根据每个子视图的自动调整掩码的子视图。您指定 这个掩码的值通过组合描述的常量 UIViewAutoresizing 使用 C 位或运算符。结合这些 常量允许您指定视图的哪些维度应该增长或 相对于超级视图收缩。该属性的默认值 是UIViewAutoresizingNone,表示视图不应该是 完全调整大小。

    当沿同一轴设置多个选项时,默认 行为是按比例分配大小差异 灵活的部分。柔性部分越大,相对于 其他灵活的部分,它可能增长得越多。例如, 假设这个属性包括UIViewAutoresizingFlexibleWidthUIViewAutoresizingFlexibleRightMargin 常量但不包括 UIViewAutoresizingFlexibleLeftMargin 常数,因此表明 视图左边距的宽度是固定的,但视图的 宽度和右边距可能会改变。因此,视图似乎锚定到 其父视图的左侧,而视图宽度和间隙 右侧视图增加。

    如果自动调整大小的行为不能提供您想要的精确布局 需要您的视图,您可以使用自定义容器视图并覆盖 它的layoutSubviews 方法可以更精确地定位您的子视图。

    【讨论】:

    • @SeongHo 是的,尝试设置它而不是像这样设置它:myToolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth
    • 是的,我已经知道了,但我真正的问题是... //查找我编辑了我的帖子
    • @SeongHo 啊,我明白了。要解决此问题,您需要为工具栏中的项目调整相同的 autoresizingMask 属性。确保最右侧工具栏中的项目设置了UIViewAutoresizingFlexibleLeftMargin,但没有设置UIViewAutoresizingFlexibleRightMargin
    • 问题已修复,我只是简单地添加了一个灵活的空格键按钮项。无论如何,谢谢,我从你那里获得了新知识! :)
    【解决方案2】:

    除了调整工具栏的灵活宽度之外,您还可以创建 2 个工具栏项数组。一张是纵向的,一张是横向的。幸运的是,您只需创建一次工具栏项,然后将它们添加到适当的数组中。

    然后在方向更改期间,您可以将工具栏的项目数组设置为适当的数组。

    祝你好运

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 2012-08-23
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多