如何在iOS中隐藏或更改特定设备的布局
我一直在开发主要针对iPhone5和iPhone6的应用程序,但当我在iPhone4S上测试时,一些布局变得混乱。如果用户从iPhone4S上查看主视图,我想在主视图中隐藏一些特殊的按钮和标签。有没有办法做到这一点?您可以获取设备类型并相应地隐藏一些UI元素 在如何在iOS中隐藏或更改特定设备的布局,ios,objective-c,iphone,swift,Ios,Objective C,Iphone,Swift,我一直在开发主要针对iPhone5和iPhone6的应用程序,但当我在iPhone4S上测试时,一些布局变得混乱。如果用户从iPhone4S上查看主视图,我想在主视图中隐藏一些特殊的按钮和标签。有没有办法做到这一点?您可以获取设备类型并相应地隐藏一些UI元素 在viewDidLoad函数中,您可以执行以下操作 if(specificDeviceType){ someButton.hidden = YES; } 要获取设备类型,可以使用获取设备类型并相应地隐藏一些UI元素 在viewDidLoa
viewDidLoad
函数中,您可以执行以下操作
if(specificDeviceType){
someButton.hidden = YES;
}
要获取设备类型,可以使用获取设备类型并相应地隐藏一些UI元素 在
viewDidLoad
函数中,您可以执行以下操作
if(specificDeviceType){
someButton.hidden = YES;
}
要获取设备类型,可以使用如果在全局范围内声明这三个结构,则可以在项目中的任何位置使用它们
struct ScreenSize {
static let SCREEN_WIDTH = UIScreen.mainScreen().bounds.size.width
static let SCREEN_HEIGHT = UIScreen.mainScreen().bounds.size.height
static let SCREEN_MAX_LENGTH = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
static let SCREEN_MIN_LENGTH = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
}
struct DeviceType {
static let IS_IPHONE_4_OR_LESS = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
static let IS_IPHONE_5 = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
static let IS_IPHONE_6 = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
static let IS_IPHONE_6P = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
static let IS_IPAD = UIDevice.currentDevice().userInterfaceIdiom == .Pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0
}
struct OSVersion {
static let SYS_VERSION_FLOAT = (UIDevice.currentDevice().systemVersion as NSString).floatValue
static let iOS7 = (OSVersion.SYS_VERSION_FLOAT < 8.0 && OSVersion.SYS_VERSION_FLOAT >= 7.0)
static let iOS8 = (OSVersion.SYS_VERSION_FLOAT >= 8.0 && OSVersion.SYS_VERSION_FLOAT < 9.0)
static let iOS9 = (OSVersion.SYS_VERSION_FLOAT >= 9.0 && OSVersion.SYS_VERSION_FLOAT < 10.0)
}
如果在全局范围内声明这三个结构,则可以在项目中的任何位置使用它们
struct ScreenSize {
static let SCREEN_WIDTH = UIScreen.mainScreen().bounds.size.width
static let SCREEN_HEIGHT = UIScreen.mainScreen().bounds.size.height
static let SCREEN_MAX_LENGTH = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
static let SCREEN_MIN_LENGTH = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
}
struct DeviceType {
static let IS_IPHONE_4_OR_LESS = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
static let IS_IPHONE_5 = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
static let IS_IPHONE_6 = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
static let IS_IPHONE_6P = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
static let IS_IPAD = UIDevice.currentDevice().userInterfaceIdiom == .Pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0
}
struct OSVersion {
static let SYS_VERSION_FLOAT = (UIDevice.currentDevice().systemVersion as NSString).floatValue
static let iOS7 = (OSVersion.SYS_VERSION_FLOAT < 8.0 && OSVersion.SYS_VERSION_FLOAT >= 7.0)
static let iOS8 = (OSVersion.SYS_VERSION_FLOAT >= 8.0 && OSVersion.SYS_VERSION_FLOAT < 9.0)
static let iOS9 = (OSVersion.SYS_VERSION_FLOAT >= 9.0 && OSVersion.SYS_VERSION_FLOAT < 10.0)
}
如果使用Interface Builder,则可以根据应用程序应用不同的约束。但在你的情况下,这似乎是行不通的
这就是为什么您可以通过检测运行设备的模型,并根据它隐藏/显示UI元素。如果您使用Interface Builder,您可以根据不同的应用程序应用不同的约束。但在你的情况下,这似乎是行不通的 这就是为什么您可以通过检测运行设备的模型,并根据它隐藏/显示UI元素。在
之前添加此项包括代码:定义系统版本大于或等于(v)([[UIDevice currentDevice]systemVersion]比较:v选项:NSNumericSearch]!=sensorderescing)
现在,在视图将加载
或视图将出现
,添加以下代码:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))//any version value you want
{
[myButton setHidden:YES];
}
将此添加到#包括代码:#将系统版本定义为大于或等于(v)([[[UIDevice currentDevice]systemVersion]比较:v选项:NSNumericSearch]!=传感器解除搜索)
现在,在视图将加载
或视图将出现
,添加以下代码:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))//any version value you want
{
[myButton setHidden:YES];
}