【发布时间】:2011-11-17 01:35:29
【问题描述】:
当我更改 iPad 的方向时,我的工具栏出现问题。
我将我的 nib 文件设置为横向,一切都很好,但是当我把它变成纵向时,我的工具栏仍然具有横向的宽度。
如何使我的工具栏适应纵向的方向变化?
风景:
肖像:
谢谢!
【问题讨论】:
标签: objective-c ios xcode ipad uitoolbar
当我更改 iPad 的方向时,我的工具栏出现问题。
我将我的 nib 文件设置为横向,一切都很好,但是当我把它变成纵向时,我的工具栏仍然具有横向的宽度。
如何使我的工具栏适应纵向的方向变化?
风景:
肖像:
谢谢!
【问题讨论】:
标签: objective-c ios xcode ipad uitoolbar
尝试将UIViewAutoresizingFlexibleWidth 添加到工具栏autoresizingMask,如下所示:
myToolbar.autoresizingMask |= UIViewAutoresizingFlexibleWidth
或者,如果您在 Interface Builder 中执行此操作,请确保选中此水平条(也可以选择其他水平条,这很好):
更多来自UIView Class ReferenceautoresizingMask:
当视图的边界发生变化时,该视图会自动调整其大小 根据每个子视图的自动调整掩码的子视图。您指定 这个掩码的值通过组合描述的常量
UIViewAutoresizing使用 C 位或运算符。结合这些 常量允许您指定视图的哪些维度应该增长或 相对于超级视图收缩。该属性的默认值 是UIViewAutoresizingNone,表示视图不应该是 完全调整大小。当沿同一轴设置多个选项时,默认 行为是按比例分配大小差异 灵活的部分。柔性部分越大,相对于 其他灵活的部分,它可能增长得越多。例如, 假设这个属性包括
UIViewAutoresizingFlexibleWidth和UIViewAutoresizingFlexibleRightMargin常量但不包括UIViewAutoresizingFlexibleLeftMargin常数,因此表明 视图左边距的宽度是固定的,但视图的 宽度和右边距可能会改变。因此,视图似乎锚定到 其父视图的左侧,而视图宽度和间隙 右侧视图增加。如果自动调整大小的行为不能提供您想要的精确布局 需要您的视图,您可以使用自定义容器视图并覆盖 它的
layoutSubviews方法可以更精确地定位您的子视图。
【讨论】:
myToolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth
UIViewAutoresizingFlexibleLeftMargin,但没有设置UIViewAutoresizingFlexibleRightMargin。
除了调整工具栏的灵活宽度之外,您还可以创建 2 个工具栏项数组。一张是纵向的,一张是横向的。幸运的是,您只需创建一次工具栏项,然后将它们添加到适当的数组中。
然后在方向更改期间,您可以将工具栏的项目数组设置为适当的数组。
祝你好运
【讨论】: