gpt4 book ai didi

ios - 如何在 iOS8 键盘扩展中检测 iPad 方向

转载 作者:搜寻专家 更新时间:2023-11-01 06:23:50 24 4
gpt4 key购买 nike

目前我正在使用这种方法来检测方向和设备:

它适用于 iPhone,但这是 iPad 的问题,无论方向如何,[[UIScreen mainScreen] bounds].size.width始终 ==768,并且 [ [UIScreen mainScreen] bounds].size.height 始终 == 1024。我的编码有什么问题?

 +(NSString*)GetOrientation{
if([UIScreen mainScreen].bounds.size.width < [UIScreen mainScreen].bounds.size.height){
NSLog(@"Potrait");
return @"Potrait";
}
else{
NSLog(@"Landscape");
return @"Landscape";
}


}
+(NSString*)GetDeviceAccordingToScreenSize:(UIViewController*)ctrl{
if ([[UIDevice currentDevice].model isEqualToString:@"iPad"]) {
int screenWidth = [[UIScreen mainScreen] bounds].size.width;
if (screenWidth==768) {
return @"P-iPad";

}else if(screenWidth==1024){
return @"L-iPad";

}else{
return @"ERROR";
}
}else{
if ([[self GetOrientation] isEqualToString:@"Potrait"]) {
int screenHeight = [[UIScreen mainScreen] bounds].size.height;
switch (screenHeight) {
case 667:{
return @"P-iPhone6";
break;
}

case 736:{
return @"P-iPhone6Plus";
break;
}
case 568:{
return @"P-iPhone5";

}
default:{
return @"P-iPhone4";
break;
}
}
}else{
int screenWidth = [[UIScreen mainScreen] bounds].size.width;
// float screenHeight = [[UIScreen mainScreen] bounds].size.height;
switch (screenWidth) {
case 667:{
return @"L-iPhone6";
break;
}

case 736:{
return @"L-iPhone6Plus";
break;
}
case 568:{

return @"L-iPhone5";
break;
}
default:{
return @"L-iPhone4";
break;
}
}

}

}

}

顺便说一下,在扩展中你无权访问 [UIApplication sharedApplication]

最佳答案

您应该使用 nativeBounds 而不是边界,以确保结果不依赖于应用程序启动时的设备方向。

extension UIDevice{
var detail:String {
if iPhone {
if UIScreen.mainScreen().nativeBounds.height == 480 {
return "iPhone Classic"
}
if UIScreen.mainScreen().nativeBounds.height == 960 {
return "iPhone 4 or 4S"
}
if UIScreen.mainScreen().nativeBounds.height == 1136 {
return "iPhone 5 or 5S or 5C"
}
if UIScreen.mainScreen().nativeBounds.height == 1334 {
return "iPhone 6"
}
if UIScreen.mainScreen().nativeBounds.height == 2208 {
return "iPhone 6+"
}
} else if iPad {
if UIScreen.mainScreen().nativeBounds.height == 1024 {
return "iPad Classic"
}
if UIScreen.mainScreen().nativeBounds.height == 2048 {
return "iPad Retina"
}
} else {
return "Undefined"
}

return "test"
}
var iPhone:Bool {
return UIDevice.currentDevice().userInterfaceIdiom == .Phone
}
var iPad:Bool {
return UIDevice.currentDevice().userInterfaceIdiom == .Pad
}
var width:CGFloat{
return UIScreen.mainScreen().bounds.width
}
var landscape:Bool {
if iPad && ( width == 1024.0 || width == 2048.0 ) {
return true
}
if iPhone && ( width == 480.0 || width == 960 || width == 1136.0 || width == 1334.0 || width == 2208.0 ) {
return true
}
return false
}
}
if UIDevice().iPhone {
println("This device is an iPhone")
}
if UIDevice().iPad {
println("This device is an iPad")
}
println("Device detail: " + UIDevice().detail )
println("Landscape: " + UIDevice().landscape.description )

关于ios - 如何在 iOS8 键盘扩展中检测 iPad 方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28005769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com