我創建了一個UIViewController子類,並發現UIViewController中-loadView的默認實現會以一種奇怪的方式忽略我的幀大小設置。爲什麼我的視圖控制器視圖不是二次的?
爲了簡化它並確保它不是我的代碼的錯誤,我直接使用UIViewController的簡單實例進行了乾淨的測試,而不是創建子類。結果是一樣的。我儘量讓320×320的確切二次觀點,但似乎認爲像320×200
iPhone OS 3.0,請檢查了這一點:
UIViewController *ts = [[UIViewController alloc] initWithNibName:nil bundle:nil];
ts.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, 320.0f);
ts.view.backgroundColor = [UIColor cyanColor];
[self.view addSubview:ts.view];
就像你看到的,我這樣做:
1)創建一個UIViewController實例
2)的視圖的幀設置爲320×320
3)給它的顏色的二次尺寸,所以可以發ee it
4)將它作爲子視圖添加。
現在的一部分,這更奇怪的:當我做我自己的實現-loadView的,也就是說,如果我把這個代碼中有這樣的:
- (void)loadView {
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 320.0f)];
v.backgroundColor = [UIColor cyanColor];
self.view = v;
[v release];
}
那麼它看起來正確。
現在我們來思考一下:在第一個例子中,我做的幾乎完全一樣,只是讓UIViewController自己創建視圖,然後將其轉換以便更改其框架。對?
那麼,爲什麼我會得到這個奇怪的錯誤?現在我看不出有什麼其他方式來糾正這種錯誤行爲。我沒有激活任何像clipsToBounds,並沒有其他代碼觸及此。
如果我手動調整視圖控制器的視圖大小,蘋果是否會拒絕我的應用程序? – dontWatchMyProfile 2010-03-28 12:04:16
@mystify:不需要,因爲視圖控制器可能會以某種未知的方式調整視圖的大小,所以編程很麻煩。 – kennytm 2010-03-28 12:11:36