我试图以编程方式将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