首次發佈堆棧溢出。忽略UIView和AutoresizingMask
我花了好幾個小時搜遍了很多谷歌搜索,並且現在已經實際記住了UIView和UIViewController類的參考文檔。無論我做什麼,我的應用都忽略了我對改變方向更改(或其他任何其他幀大小修改)的看法所作的努力。
沒有涉及nib或xib;我以編程方式構建了所有視圖和viewcontrollers,並且它們(視圖控制器)都是我創建的三個自定義UIViewController子類之一的所有子類。這些超類在他們的loadView下面幾行:方法...
[self setView:[[[UIView alloc] initWithFrame:[self viewFrame]] autorelease]];
[[self view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[[self view] setAutoresizesSubviews:TRUE];
在所有適當的setter方法(無論我加換句話說,一個子視圖),我反覆應用autoresizingMask的步驟。看起來,不管我做什麼,結果總是一樣的 - 我點擊構建,點擊調試,等待應用程序啓動,旋轉設備,並presto!視圖旋轉但根本不調整大小。
我在這裏錯過了什麼?這可能很明顯,我只是沒有看到。任何幫助真正感謝,提前感謝。
Overriding -setFrame:是一種非常可靠的方式來查看視圖的大小。 – aksommerville 2011-07-05 12:50:03
哦,是的,當然!在調試保留計數時,我總是使用這種技術,但在其他情況下,我經常忽略這種做法。 (有趣的是,顯而易見的迴避可能是什麼。)爲了澄清你對其他人的評論,這是指覆蓋-setFrame,以吐出一些NSLog,告訴你視圖的名稱和一些幀值。 (如果你嘗試這樣,不要忘記調用super的實現。) – quickthyme 2011-07-25 05:47:08
除此之外,我不會將該方法用於其他任何事情。在將代碼作爲生產發佈之前,我也會努力禁用覆蓋。 – quickthyme 2011-07-25 21:47:34