2010-01-23 62 views
2

我一直在尋找調整大小的背景信息,但我一直沒有找到太多。我知道我需要在子視圖上設置autoresizesSubviews,在子視圖上設置autoresizingMaskUIView子類不會自動調整大小

我已經這樣做了,我的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它做工精細,但它現在的行爲預期。

回答

4

我認爲你錯過了UIViewAutoresizingFlexibleHeight或子視圖的寬度。否則,我認爲該觀點只是根據利潤率而移動,但不會調整。

+0

Apple的文檔說UIViewAutoresizingFlexibleBottomMargin會導致「通過擴展或縮小左邊距的方向來調整視圖大小。」這是我想要的。我不想讓視圖伸展。此外,即使我使用FlexibleWidth/Height,它也不會達到人們所期望的效果。雖然它調整大小,但只要我在子視圖上調用'setNeedsDisplayInRect:',它就會撤銷調整大小,並且從此開始調整大小不正確。它重複調整大小/取消調整大小,但使用這種新的形狀並不能滿足超級視圖的需要。 – 2010-01-23 20:52:14

+0

然後蘋果文檔謊言。沒有FlexibleHeight/Width選項,您不會進行任何拉伸。 順便說一句,在一個名爲「開始iPhone開發項目」的檔案中有一些示例代碼,你可以從http://iphonedevbook.com/forum/viewforum.php?f=54得到你可以構建和混淆得到更好地理解所有這些自動化的東西是如何工作的。這些項目被稱爲「05 Autoresize 1」和「05 Autoresize 2」。我發現調整大小的模型有點令人困惑,如果不玩這些選項就不會真正理解它。 – Nimrod 2010-01-24 15:46:42

+1

感謝您的指點,我已經搞砸了一點,我開始瞭解它,但是IB和這樣做的程序化方式似乎並沒有很好地映射到彼此。猜猜該是另一個問題了。 – 2010-01-24 19:34:56

0

你提到了旋轉。包含您的自定義視圖的超級視圖是否實際調整大小?如果有疑問,請將其背景設置爲某種奇怪的顏色。如果在方向改變後它沒有正確調整大小,那麼你應該在右邊看到一個白色或灰色的條。

+0

是的,它旋轉和調整大小就好了。 – 2010-01-24 05:34:26