[英]How to make a subview automatically resize with its superview?
我有一个包含一个子视图的视图; 这个子视图本身包含另一个子视图,它意味着比它的superview略小。
我正在创建第一个子视图全屏尺寸,然后将其缩小到屏幕上的非常小的尺寸。 点击子视图时,我会将其从小尺寸设置为全屏幕。
问题是我的第二个子视图在这个动画期间从不调整自身大小 - 它总是呈现为全尺寸并溢出其超视图的边界。
是否有一种简单的方法可以让子视图在其superview更改大小时按比例保持自己的大小?
您可以以编程方式添加自动调整行为
Objective-C的
subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Swift 3.x
subview.autoresizingMask = [.flexibleWidth, .flexibleHeight]
Swift 2.x
subview.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
在Interface-Builder中,导航到选项卡3,然后单击中间的箭头; D.
另一种解决方法可能是实现setFrame方法并始终使其适应superview的大小(而不是给定的frame.size)。 不要忘记根据需要设置原点。
- (void) setFrame:(CGRect)frame
{
CGRect rect = self.superview.frame;
rect.origin.x = 0;
rect.origin.y = 0;
[super setFrame:rect];
}
这对我有用
subview.frame = subview.superview.bounds;
如果您仅使用[.flexibleWidth,.flexibleHeight]作为自动调整遮罩,则子视图将不会按比例调整大小。 正确的答案是:
autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleTopMargin, .flexibleLeftMargin, .flexibleBottomMargin, .flexibleRightMargin]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.