繁体   English   中英

如何使用超级视图自动调整子视图的大小?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM