【问题标题】:autoresizesSubviews自动调整子视图
【发布时间】:2012-10-07 01:58:14
【问题描述】:

iOS6 UIView Class Reference 在属性 autoresizesSubviews 上说:

一个布尔值,用于确定接收方是否在其边界发生变化时自动调整其子视图的大小。
讨论
当设置为 YES 时,接收器会在 边界发生变化时调整其子视图的大小。默认值为 YES。

对于我这个非英语母语人士来说,这有点不清晰。 “其”是指接收者还是接收者的子视图?

【问题讨论】:

  • 在正确的英语语法中,如果该句子是指接收者的子视图,则“其”一词将更改为他们。我很好奇这个布尔值的机制。我想知道,如果它设置为 no,是否会禁用所有子视图的自动调整大小掩码,例如视图范围的即时关闭开关?

标签: cocoa-touch uiview uikit


【解决方案1】:

它指的是接收者。

如果视图 A 上的autoResizesSubviews 设置为 YES,视图 A 是视图 B 和 C 的父视图,那么当 A 的边界发生变化时,A 会调整 B 和 C 的大小。

【讨论】:

  • 哦,我明白了,所以它不调用 sizeToFit?
  • autoresizeSubviews 有点奇怪。我不是一个完全熟练的布局大师,但我知道,当这是肯定的,并且视图包含一个没有灵活自动调整大小掩码的子视图时,该子视图的内部子视图仍会调整大小。这一直是我的问题。超级视图可以绕过设置为使视图刚性的自动调整大小蒙版,以影响内部子视图的大小/布局。完全违反直觉,足以让我发疯好几个小时。
  • @TomPace 我也遇到了同样的问题,请问你是怎么解决的?
  • @SarimSidd 我不记得我在执行此操作时使用的具体代码。我刚刚从 11 月 28 日到 30 日浏览了我的 Git 日志,并没有像我注释的解决方案那样跳出来,但我确实添加了一些方法来询问子视图的首选尺寸。所以也许你可以试试这个:让你的子视图和内部子视图都 UIViewAutoresizingNone,然后在超级视图的边界发生变化时进行任何手动调整。
  • @SarimSidd 顺便说一句我停止使用常量。这可能是个坏主意,因为它们是抽象的符号,但我怀疑它们会改变。我只是记住了这些值的含义和顺序,打开时它们都是弹簧,不打开时它们都是支柱。 1,2,4,8,16,32 = 左、宽、右、上、高、下。这使得输入速度更快,并且通过注释说明更易于阅读。因此,我手动调整 autoresizingMask 的任何代码行都类似于: adbannerview.autoresizingMask = 2 + 8; // flex 宽度和顶部,用于底部停靠的广告横幅
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多