我有一個視圖,其中包含一個子視圖;這個子視圖本身包含另一個子視圖,它比它的超級視圖略小。如何使一個子視圖自動調整其超視圖?
我正在創建第一個子視圖全屏尺寸,然後將其縮小到屏幕上的一個非常小的尺寸。當點擊子視圖時,我將它從小尺寸移動到全屏。
問題是,我的第二個子視圖在此動畫期間從不調整自己的大小 - 它總是呈現全尺寸並溢出其超級視圖的邊界。
有沒有一種簡單的方法讓子視圖按比例保持其大小,因爲它的超視圖會改變大小?
我有一個視圖,其中包含一個子視圖;這個子視圖本身包含另一個子視圖,它比它的超級視圖略小。如何使一個子視圖自動調整其超視圖?
我正在創建第一個子視圖全屏尺寸,然後將其縮小到屏幕上的一個非常小的尺寸。當點擊子視圖時,我將它從小尺寸移動到全屏。
問題是,我的第二個子視圖在此動畫期間從不調整自己的大小 - 它總是呈現全尺寸並溢出其超級視圖的邊界。
有沒有一種簡單的方法讓子視圖按比例保持其大小,因爲它的超視圖會改變大小?
您可以添加自動尺寸調整行爲編程
Objective-C的
subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
斯威夫特3.X
subview.autoresizingMask = [.flexibleWidth, .flexibleHeight]
斯威夫特2.x的
subview.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
在接口的生成器導航到接頭3和點擊在中間的箭頭; d
另一個解決方法可以是實施SETFRAME-方法,總是使其適應於上海華的大小(未給定的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]
好吧,既然這是UIView的一部分,嘗試UIKit的'#進口' –
Lepidopteron
2011-03-29 14:30:49
好了,這樣的作品,但它似乎並沒有被調整的按比例查閱。如果我將超級視圖的寬度增加2倍,子視圖的寬度增加4倍。有什麼辦法讓子視圖相對於超級視圖保持其比例大小? – MusiGenesis 2011-03-29 14:35:49
您爲這些常量添加了一個額外的「掩碼」。 – MusiGenesis 2011-03-29 14:36:26