如何通过编程获取iPhone屏幕尺寸?

11

可能重复:
如何使用代码获取屏幕大小?

 NSLog(@"Top Left View : Width %f height%f",self.topLeftView.frame.size.width,self.topLeftView.frame.size.height);

我已经从对象库中拖拽了"View"并将其放置在xib文件中。

但是,如果我想获取屏幕尺寸以检查它是否为iPhone 4、iPhone 3、iPhone 5或任何iOS设备,该怎么办?

这样我就可以相应地调整其他视图的位置。


请使用[[UIScreen mainScreen] bounds][[UIScreen mainScreen] applicationFrame] - Bryan Chen
使用以下代码[UIScreen mainScreen].bounds.size - Exploring
2
非常简单的问题。我希望在我打字的30秒内,其他主题也能得到6个答案;) - Cynichniy Bandera
这只是因为我先尝试了这个门户网站,你可以在合理的时间内得到确切的答案。有时候谷歌会给出比你要求的更多的信息,所以会让人感到困惑。 - bhavya kothari
4
为什么这些重复的问题没有被标记并投票关闭?:/ - rohan-patel
4个回答

30

你可以使用:

CGsize screenSize      = [[[UIScreen mainScreen] bounds] size];
CGFloat widthOfScreen  = screenSize.width;
CGFloat heightOfScreen = screenSize.height;

4
您本可以选择投票关闭此问题,而不是回答重复的问题并满足那些在提问之前不愿意搜索的“求助吸血鬼”。请注意,该链接为英文网站,解释内容不在翻译范围之内。 - rohan-patel
1
@rohan-patel:谢谢您的评论。我会去做的。 - Midhun MP
1
非常感谢。请不要把这个当成个人攻击。这样网站会保持清晰,也不会有一堆重复的问题。希望你能理解。 - rohan-patel
@rohan-patel:是的,作为一名审阅者,我知道。 :) - Midhun MP
如果您的应用程序仅设计为横向或纵向模式,则需要比较宽度和高度以确定正确的尺寸。我们无法再可靠地获取方向。例如,我有一个仅设计为纵向模式的应用程序,但如果在iPad上以横向模式打开,则宽度和高度会混淆。 - Bobby

12
你可以通过UIScreen属性来了解它。
[[UIScreen mainScreen] bounds].size.height;
[[UIScreen mainScreen] bounds].size.width;

对于iPhone 5和iPod touch 5代,高度为568

对于其他iPhone和iPod,高度为480

编辑:在iOS 8上,高度和宽度取决于方向,因此这些尺寸是针对纵向的,在横向时,这些尺寸将用于宽度。因此,最好的选择是同时读取并获取最大值


为什么 iPhone 5 和 iPod Touch 5Gen 的高度是 568 而不是 1136? - chancyWu
1
因为它是真实大小,而不是像素大小,如果您想要像素大小,您必须将[[UIScreen mainScreen] bounds].size.height * [UIScreen mainScreen].scale相乘(您必须使用类似这样的东西,因为在某些情况下比例尺不可用CGFloat scale = ([mainScreen respondsToSelector:@selector(scale)] ? mainScreen.scale : 1.0f);) - jcesarmobile
谢谢,我想我知道原因了。 - chancyWu

5

您可以通过以下方式获取iPhone屏幕的尺寸:

CGSize size = [UIScreen mainScreen].bounds.size;

2
UIScreen *screen = UIScreen.mainScreen;

它拥有你所需的一切,包括边界和比例尺(对于视网膜和非视网膜可能不同)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接