我有一个 UIView 的自定义子类,我们称之为 BottomBox。
BottomBox 具有以下覆盖方法:
-(void)setBounds:(CGRect)bounds;
和
-(void)setFrame:(CGRect)frame;
在每个中调用 [super set*:*],并记录当前和新的 CGRect,以及两者中的断点。
BottomBox 对象具有 autoresizingMask 集:
bottombox1.autoresizingMask =
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin;
它们位于屏幕底部。
BottomBox 对象包含主 .layer 属性的子层,这些子层被转换,这些层的边界框超出了 BottomBox 对象的视图边界区域。这会导致框架/边界访问器返回调整后的边界值,我已经说明了这一点。
但是在设备方向更改后,BottomBox 对象的大小会异常调整,尽管 autoresizingMask 属性没有定义宽度或高度的灵活性。以我的经验,边界/框架的高度没有被调整,但宽度被极度扭曲。
现在,我觉得我只是误解了边界和框架的真正含义。也许,实际上,它们是根据子视图和子层为每次访问动态计算的。
我想知道是否有其他方法可以调整这些,也许我忽略了一些东西。