自动调整大小掩码用于固定边距大小。

3
在包含多个子视图的视图中,其中一个子视图应该保持距离父视图顶部和底部的固定非零距离。在这些图片中,这个视图显示为灰色: 竖屏 横屏 根据文档,这个视图应该有一个 UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth 的掩码。然而,这会导致视图扩展其高度以覆盖整个父视图。如何将视图限制在固定但非零边距内?谢谢。

快问一下,宽度调整可行吗? - Jesse Naugher
是的。只有高度有问题。 - David M.
父视图的自动调整大小掩码设置为什么?此外,您是在IB中还是在代码中设置掩码? - Andrew Pouliot
1个回答

2

UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth 应该可以正常使用。

然而,当父视图的高度/宽度变小(并且当它变为零时所有内容都会崩溃),UIView自动调整大小存在一个bug —— 可能是UIView的高度/宽度不能变为负数。

在使用initWithFrame:CGRectZero时,我遇到了这个问题;如果self.bounds是CGRectZero(或者很小),使用subview.frame = self.bounds也可能会出现这种情况。

我的粗暴调试方法是重写setFrame:和setBounds:以添加NSLog。


谢谢建议。奇怪的是,如果我在UIView上使用setBounds创建一个类别,并调用super,则会收到“-[UIView setBounds:]:无法识别的选择器”错误。有任何想法为什么会这样? - David M.
因为一个类别不是一个子类。哇,这真是密集的内容。 - David M.
有关“基础调用”的类别,请参见http://stackoverflow.com/questions/3487828/if-i-override-a-class-method-is-there-a-way-i-can-call-the-original-method-the/3490215#3490215。 - tc.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接