如何以编程方式获取iOS的物理屏幕大小?

11 浏览
0 Comments

如何以编程方式获取iOS的物理屏幕大小?

可以吗?我想要英寸的数量,而不是像素的数量。我知道大约是160 ppi,但不完全准确。

0
0 Comments

iOS无法直接获取物理屏幕尺寸的API。最佳方法是查看设备的屏幕尺寸(以点为单位),然后根据此推断它是iPad还是iPhone等,并使用硬编码的值来表示屏幕尺寸。

以下是一些获取屏幕尺寸的代码:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

请注意,宽度和高度可能会根据设备的方向而交换。

0
0 Comments

iOS中获取屏幕物理尺寸的方法在UIScreen和UIDevice类中是不可用的。但是可以通过查看Erica的UIDevice-extension和Wikipedia上列出的每个设备的规格来推断出屏幕的物理尺寸。

UIDevice-extension是一个开源项目,提供了一些扩展方法来获取iOS设备的各种信息,包括屏幕尺寸。使用该扩展,可以通过以下代码获取屏幕的物理尺寸:

#import "UIDevice+Resolutions.h"
...
CGSize screenSize = [[UIDevice currentDevice] resolutionSize];
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;

此外,Wikipedia上有一份列出了各个iOS设备的规格信息的列表。通过查找特定设备的规格信息,可以获取其屏幕的物理尺寸。

总结起来,要在iOS中获取屏幕的物理尺寸,可以使用Erica的UIDevice-extension扩展方法,或者查找Wikipedia上列出的设备规格信息。

0
0 Comments

iOS中如何在程序中获取物理屏幕尺寸?

在iOS中,我们有时需要获取设备的物理屏幕尺寸。虽然可以使用UIScreen.main.bounds.size获取屏幕尺寸,但有些情况下这种方法并不准确。因此,我们需要一种更可靠的方法来获取物理屏幕尺寸。

下面是一种简短的方法,可以估计设备的屏幕尺寸。它会根据最新的设备进行更新,但在未来的设备上可能会出错(因为所有的猜测方法都可能出错)。如果设备正在进行镜像显示,则该方法可能会混淆(返回设备的屏幕尺寸,而不是镜像屏幕的尺寸)。

#define SCREEN_SIZE_IPHONE_CLASSIC 3.5
#define SCREEN_SIZE_IPHONE_TALL 4.0
#define SCREEN_SIZE_IPAD_CLASSIC 9.7
+ (CGFloat)screenPhysicalSize
{
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        CGSize result = [[UIScreen mainScreen] bounds].size;
        if (result.height < 500)
            return SCREEN_SIZE_IPHONE_CLASSIC;  // iPhone 4S / 4th Gen iPod Touch or earlier
        else
            return SCREEN_SIZE_IPHONE_TALL;  // iPhone 5
    }
    else
    {
        return SCREEN_SIZE_IPAD_CLASSIC; // iPad
    }
} 

当然,引入了iPad Mini后,这段代码就会失效(因为它的物理尺寸比iPad 2小,但分辨率相同)。这只能作为一个指南,而不能保证准确性。

如今,我们有iPhone 6和6+,用户可以在“缩放”模式下运行,因此同一款手机可以报告不同的边界值。

这种情况下,我们可以考虑使用更为准确的方法来获取物理屏幕尺寸。可以使用以下代码:

+ (CGSize)screenPhysicalSize
{
    CGFloat scale = [UIScreen mainScreen].scale;
    CGSize size = CGSizeMake([UIScreen mainScreen].bounds.size.width * scale, [UIScreen mainScreen].bounds.size.height * scale);
    return size;
}

这种方法会考虑到缩放模式,并返回准确的物理尺寸。

获取iOS设备的物理屏幕尺寸是一个常见的需求。通过使用UIScreen.main.bounds.size可以获得设备的屏幕尺寸,但这种方法并不总是准确的。为了更可靠地获取物理屏幕尺寸,我们可以使用上述代码中的方法。这样,我们就可以在iOS应用程序中准确地获取设备的物理屏幕尺寸。

0