我使用UIView的子类来(以编程方式)包含和管理多个子视图(主要是UIImageViews),这些子视图彼此相邻,因此没有任何子视图重叠。假设子视图的高度都相同(最初绘制时)是安全的,但是宽度是变化的。容器可能会调整大小,在这种情况下,我希望子视图按比例缩放。此外,有时我需要添加/删除/编辑任何给定的子视图(可能会改变其宽度)。向/从UIView中添加/删除子视图时平滑缩放
我取得了一些成功使用:
[self setAutoresizesSubviews:YES];
[self setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleBottomMargin)];
有容器自动调整其子视图时,其框架的变化。
不幸的是,当子视图的内容发生变化导致它扩大或缩小时,我遇到了很多麻烦。简单地设置'setNeedsLayout'并为子视图定义'layoutSubviews'似乎并没有做到这一点,因为在'layoutSubviews'开始时,子视图的框架没有被调整。如果我强迫它,那么当前的内容被拉伸或收缩,这看起来很可怕。
如果有人能解释如何在这种情况下使用sizeToFit,layoutSubviews,sizeThatFits:,setAutoresizesSubviews:,setAutoresizingMask :,和setContentMode:我肯定会很感激。我的意思是,如果我想调整一个子视图的内容(并扩大它),然后我怎么做这样的:
- 子视图加宽(无不利拉伸或在其内部还有自动调整的任何东西)
- 容器变宽成比例的量
- 没有其他子视图的受影响
?
在此先感谢!