我有一個基於導航的應用程序,我將自定義視圖放置在導航視圖中。首先,我想知道如何獲得「導航視圖」的框架,以便我可以正確放置自定義視圖。
此外,我有時會隱藏導航欄,並希望確保正確獲取框架信息。 (不與[[UIScreen mainScreen]邊界])以設置爲超視圖框架的框架以編程方式創建視圖?
其次,一般來說,如何訪問超級視圖的框架,以便我可以相應放置視圖?
我試過以下沒有成功。
-(void) loadView {
[super loadView];
UIView* myView = [[UIView alloc] initWithFrame: CGRectZero];
self.view = myView;
self.view.frame = self.view.superview.frame;
[myView release];
}
或在layoutSubviews中設置框架,但發現layoutSubviews沒有被調用。我想這是因爲我在這個視圖中沒有任何子視圖?
謝謝
CNC中
與給出的答案,現在我知道我需要設置view.frame到上海華的邊界。
問題是,我無法訪問viewDidLoad內的超級查看。
我可以看到superview在viewWillAppear中正確設置,但不在viewDidLoad中。
我發現viewDidLoad中被調用在不同的時間,在由推pushViewController或訪問self.view
我有以下代碼和viewDidLoad中被從零稱爲== controller.view.superview如。
if (nil == controller.view.superview) {
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[scrollView addSubview:controller.view];
}
既然不能從viewDidLoad中訪問上海華,我不能,因爲我以前在viewDidLoad中做佈局視圖。這似乎很不方便,也不必要的複雜。
有什麼建議嗎?
您需要閱讀iOS中的視圖層次結構。 – Tirth 2010-11-09 05:53:42
贊成,谷歌搜索它。 – eugene 2010-11-09 06:04:46