我一直在尋找調整大小的背景信息,但我一直沒有找到太多。我知道我需要在子視圖上設置autoresizesSubviews
,在子視圖上設置autoresizingMask
。UIView子類不會自動調整大小
我已經這樣做了,我的UIImageViews正確調整大小,但我的自定義UIView子類沒有。
爲的UIImageView的代碼:
UIImageView *newX = [[[UIImageView alloc] initWithImage:dot] autorelease];
[newX setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[newX setFrame:CGRectMake(0, 0, self.view.bounds.size.width, 1)];
[self.view addSubview:newX];
自定義UIView子類代碼:
trace = [[TraceView alloc] initWithFrame:self.view.bounds];
[trace setAutoresizingMask:(UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin)];
[self.view addSubview:trace];
從我所知道的,視圖旋轉如預期,但不會調整。我再也看不到它的底部了,它並沒有將屏幕填充到右側。 我是否需要向UIView子類添加任何內容以使調整大小正常工作?
編輯: 我已經改變了autoresizingMake到(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
並呼籲[subview setNeedsDisplay];
我不知道爲什麼這是必要的,因爲沒有的UIImageViews它做工精細,但它現在的行爲預期。
Apple的文檔說UIViewAutoresizingFlexibleBottomMargin會導致「通過擴展或縮小左邊距的方向來調整視圖大小。」這是我想要的。我不想讓視圖伸展。此外,即使我使用FlexibleWidth/Height,它也不會達到人們所期望的效果。雖然它調整大小,但只要我在子視圖上調用'setNeedsDisplayInRect:',它就會撤銷調整大小,並且從此開始調整大小不正確。它重複調整大小/取消調整大小,但使用這種新的形狀並不能滿足超級視圖的需要。 – 2010-01-23 20:52:14
然後蘋果文檔謊言。沒有FlexibleHeight/Width選項,您不會進行任何拉伸。 順便說一句,在一個名爲「開始iPhone開發項目」的檔案中有一些示例代碼,你可以從http://iphonedevbook.com/forum/viewforum.php?f=54得到你可以構建和混淆得到更好地理解所有這些自動化的東西是如何工作的。這些項目被稱爲「05 Autoresize 1」和「05 Autoresize 2」。我發現調整大小的模型有點令人困惑,如果不玩這些選項就不會真正理解它。 – Nimrod 2010-01-24 15:46:42
感謝您的指點,我已經搞砸了一點,我開始瞭解它,但是IB和這樣做的程序化方式似乎並沒有很好地映射到彼此。猜猜該是另一個問題了。 – 2010-01-24 19:34:56