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