2010-08-19 50 views
26

我有這樣的事情:如何添加一個位置的子視圖?

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
[mainCanvas addSubview: myViewController.view]; 
self.view = mainCanvas; 

它會在該位置被添加(0,0),但我想它在(0,100)或其他地方補充。我該怎麼做?

回答

53

事情是這樣的:

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
myViewController.view.frame = CGRectMake(0, 100, myViewController.view.frame.size.width, myViewController.view.frame.size.height); 
[mainCanvas addSubview: myViewController.view]; 
self.view = mainCanvas; 
+0

@applefreak框架*是*視圖在其superview的座標系統中的位置。你要求的是沒有意義的。 – 2015-05-30 01:46:14

+0

這是最乾淨的方式,甚至不需要啓用掩碼轉換。令人難以置信的是,就我而言,'(0,0,width,height)'必須明確聲明,因爲它不是默認行爲。瘋! – Angad 2016-07-06 18:30:25

8

在子視圖上設置框架屬性。

+1

我可以提供樣品嗎? – DNB5brims 2010-08-19 05:09:06

12

除了設置frame屬性,你還可以設置一個視圖的center財產。

6

這是我發現添加子視圖的最佳方式,如加載屏幕或您想要顯示的內容是否在UIViewUIScrollViewUITableView中。

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
myViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
[self.view addSubview:myViewController.view]; 
self.view.bounds = myViewController.view.bounds; 

這將使子視圖以全屏幕顯示,無論您身在何處的self.view通過添加子視圖你在哪裏當前位於self.view,而不是在左上角它定位,如果您處於您的觀點的最頂端,則只會完全展示。

相關問題