假设我有3个动画文件,大小适合iPhone 5s,iPhone 6和iPhone 6 Plus。那么ipad呢?
对于相同的视图控制器,我应该如何将这些相应的文件用于不同的iPhone大小。这是一个具体的例子:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@”iphone5s” ofType:@”gif”];
但如果我想加载iPhone 6,iPhone 6 plus,名为iPhone6.gif
,iPhone6Plus.gif
等,该怎么办
我正在使用Objective-C。
答案 0 :(得分:2)
您可以使用SDVersion来检测当前的device
信息。 SDVersion是:
因此,您可以使用它来获取设备型号,设备屏幕尺寸,设备名称和 iOS版本如下:
// Check for device model
if ([SDVersion deviceVersion] == iPhone6)
NSLog(@"You got the iPhone 6. Sweet !");
else if ([SDVersion deviceVersion] == iPhone6Plus)
NSLog(@"iPhone 6 Plus? Bigger is better!");
else if ([SDVersion deviceVersion] == iPadAir2)
NSLog(@"You own an iPad Air 2 !");
// Check for device screen size
if ([SDVersion deviceSize] == iPhone4inch)
NSLog(@"Your screen is 4 inches");
// Get device name
NSLog(@"%@", stringFromDeviceVersion([SDVersion deviceName]));
/* e.g: Outputs 'iPhone 6 Plus' */
// Check for iOS Version
if (iOSVersionGreaterThanOrEqual(@"8"))
NSLog(@"You are running iOS 8 or above!");
在您的情况下,您可以:
NSString *name;
DeviceSize size = [SDVersion deviceSize];
if (size == iPhone35inch)
name = @"iPhone4";
else if(size == iPhone4inch)
name = @"iPhone5";
else if(size == iPhone47inch)
name = @"iPhone6";
else if(size == iPhone55inch)
name = @"iPhone6Plus";
else
name = @"iPad";
NSString *filePath = [[NSBundle mainBundle] pathForResource:name ofType:@"gif"];
答案 1 :(得分:1)
尝试使用具有适当命名约定的特定图像文件名。像,
- fileName.png -> iPhone (non-retina/fallback)
- fileName@2x.png -> iPhone (retina)
- fileName@3x.png -> iPhone 6 Plus (retina)
- fileName~ipad.png -> iPad (non-retina)
- fileName@2x~ipad.png -> iPad (retina)
So, in code we can use:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@”fileName” ofType:@”png”];
内部OS
将检测设备版本并选择要展示的相应图像。
我使用了故事板图像分配,我没有试过代码库,但是你可以尝试一下。
希望这有帮助。
答案 2 :(得分:0)
您可以使用sys/utsname.h
中的uname获取设备型号。
查看this