簡體   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