我試圖以編程方式將UITableView
添加到我的視圖中,但如下設置其參數不起作用(最後一個單元格被裁剪)。什麼是iPhone屏幕頂部狀態欄的確切大小?
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
我試着用460代替高度,效果很好。但是,我想知道這個酒吧的確切大小:
感謝您的幫助。
我試圖以編程方式將UITableView
添加到我的視圖中,但如下設置其參數不起作用(最後一個單元格被裁剪)。什麼是iPhone屏幕頂部狀態欄的確切大小?
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
我試着用460代替高度,效果很好。但是,我想知道這個酒吧的確切大小:
感謝您的幫助。
您絕不應該在代碼中的任何位置硬編碼高度的確切值。
只要你使用默認的UI組件(UINavigationController
/UITableView
/UICollectionView
/等),你通常不需要擔心狀態欄高度在所有。這些ViewController應該在任何設備和任何方向上正確佈局。
如果你有自定義佈局的需要,你應參考safeAreaLayoutGuide
上UIView
,而不是硬編碼的高度: https://developer.apple.com/documentation/uikit/uiview/2891102-safearealayoutguide?language=objc
但是,爲了使這個答案完成 - 在狀態欄的大小
實際上,在非視網膜上是20px或在視網膜上是40px ......無論哪種方式,它是20點,但+1,我同意「你不應該在你的代碼中需要這個值。」 – 2013-03-11 23:03:40
更新爲點。 – calimarkus 2013-03-11 23:04:50
我剛剛通過創建一個新的單一視圖應用程序嘗試了一下,然後在我的ViewController中添加了一個UITableView,它使用'[self.view addSubview:table];'添加,這可能是因爲它。這種做法有什麼問題嗎? – Rob 2013-03-11 23:20:01
您的父視圖控制器將調整它的視圖大小。您可以
-layoutSubviews
[[ MyViewClass alloc ] initWithFrame:superview.bounds]
)和適當的自動尺寸面具插入您的子視圖。在使用自動調整struts &彈簧時,您必須爲視圖提供合適的大小。順便說一句 - 硬編碼狀態欄高度的另一個問題:有時是雙高度。 (當用戶錄製音頻,撥打電話,使用網絡共享,使用導航等)
好吧,我明白,非常感謝。 – Rob 2013-03-12 07:56:21
這個答案是搶在評論原來的問題的問題:
所以,如果我不要硬編碼我的屏幕大小,我怎麼能自動設置它以適應我的UIViewController?
試試這個:
- (void)viewDidLoad {
[super viewDidLoad];
table = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
// all other table setup
table.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:table];
}
這是假設您想要的表視圖,以填補視圖控制器的看法。根據需要調整。
這將確保表視圖的大小隨着視圖控制器視圖大小的改變而改變。這包括旋轉,通話狀態欄等。
非常感謝代碼和解釋,非常清楚:) – Rob 2013-03-12 07:52:44
您不應該使用設置的像素尺寸來在屏幕上顯示尺寸。使用你的觀點的框架。即
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
無論如何。這是20分。 20px非視網膜。 40px視網膜。
更新iPhone X
以前,所有的iPhone設備有20pt的狀態欄的高度。但在iPhone X上,它是44pt。所以在實現你的UI時要小心。
不硬編碼屏幕功能的大小!你將在稍後被擰緊。 'UIViewController'應該適合你的視圖大小 - 確保你正確地設置了自動調整大小或者彈出&struts。 – nielsbot 2013-03-11 23:03:54
即問題在於別處。 – nielsbot 2013-03-11 23:04:21
也稱爲「狀態欄」 – nielsbot 2013-03-11 23:04:56