San*_*rya 50 objective-c swift
我需要将此Objective-C替换为Swift.有没有人对如何转让有任何建议?
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480)
{
// iPhone Classic
}
if(result.height == 568)
{
// iPhone 5
}
}
Run Code Online (Sandbox Code Playgroud)
Leo*_*bus 142
Xcode 9•Swift 4
extension UIDevice {
var iPhoneX: Bool {
return UIScreen.main.nativeBounds.height == 2436
}
var iPhone: Bool {
return UIDevice.current.userInterfaceIdiom == .phone
}
enum ScreenType: String {
case iPhones_4_4S = "iPhone 4 or iPhone 4S"
case iPhones_5_5s_5c_SE = "iPhone 5, iPhone 5s, iPhone 5c or iPhone SE"
case iPhones_6_6s_7_8 = "iPhone 6, iPhone 6S, iPhone 7 or iPhone 8"
case iPhones_6Plus_6sPlus_7Plus_8Plus = "iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus or iPhone 8 Plus"
case iPhones_X_XS = "iPhone X or iPhone XS"
case iPhone_XR = "iPhone XR"
case iPhone_XSMax = "iPhone XS Max"
case unknown
}
var screenType: ScreenType {
switch UIScreen.main.nativeBounds.height {
case 960:
return .iPhones_4_4S
case 1136:
return .iPhones_5_5s_5c_SE
case 1334:
return .iPhones_6_6s_7_8
case 1792:
return .iPhone_XR
case 1920, 2208:
return .iPhones_6Plus_6sPlus_7Plus_8Plus
case 2436:
return .iPhones_X_XS
case 2688:
return .iPhone_XSMax
default:
return .unknown
}
}
}
Run Code Online (Sandbox Code Playgroud)
print("screenType:", UIDevice.current.screenType)
Run Code Online (Sandbox Code Playgroud)
Vla*_*pko 25
使用UIScreen扩展的替代解决方案(iOS 8及更高版本):
extension UIScreen {
enum SizeType: CGFloat {
case Unknown = 0.0
case iPhone4 = 960.0
case iPhone5 = 1136.0
case iPhone6 = 1334.0
case iPhone6Plus = 1920.0
}
var sizeType: SizeType {
let height = nativeBounds.height
guard let sizeType = SizeType(rawValue: height) else { return .Unknown }
return sizeType
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
if UIScreen.mainScreen().sizeType == .iPhone4 {
// Make specific layout for small devices.
}
Run Code Online (Sandbox Code Playgroud)
if UIDevice().userInterfaceIdiom == .Phone {
switch UIScreen.mainScreen().bounds.size.height{
case 480:
print("iPhone 4S")
case 568:
print("iPhone 5")
default:
print("other models")
}
}
Run Code Online (Sandbox Code Playgroud)
UIScreen.mainScreen().bounds.size.height将提供设备的高度.通过使用此值,我们可以检查特定的iPhone设备.
iPhone XS,iPhone XS Max和iPhone XR的新更新
extension UIDevice {
var iPhoneX: Bool {
return UIScreen.main.nativeBounds.height == 2436
}
var iPhone: Bool {
return UIDevice.current.userInterfaceIdiom == .phone
}
enum ScreenType: String {
case iPhone4_4S = "iPhone 4 or iPhone 4S"
case iPhones_5_5s_5c_SE = "iPhone 5, iPhone 5s, iPhone 5c or iPhone SE"
case iPhones_6_6s_7_8 = "iPhone 6, iPhone 6S, iPhone 7 or iPhone 8"
case iPhones_6Plus_6sPlus_7Plus_8Plus = "iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus or iPhone 8 Plus"
case iPhoneXR = "iPhone XR"
case iPhoneX_iPhoneXS = "iPhone X,iPhoneXS"
case iPhoneXSMax = "iPhoneXS Max"
case unknown
}
var screenType: ScreenType {
switch UIScreen.main.nativeBounds.height {
case 960:
return .iPhone4_4S
case 1136:
return .iPhones_5_5s_5c_SE
case 1334:
return .iPhones_6_6s_7_8
case 1792:
return .iPhoneXR
case 1920, 2208:
return .iPhones_6Plus_6sPlus_7Plus_8Plus
case 2436:
return .iPhoneX_iPhoneXS
case 2688:
return .iPhoneXSMax
default:
return .unknown
}
}
}
Run Code Online (Sandbox Code Playgroud)
print(“ screenType:”,UIDevice.current.screenType.rawValue)
这是我使用Xcode 10 + Swift 4 + iPhone XS / XS Max / XR的方法
struct ScreenSize {
static let SCREEN_WIDTH = UIScreen.main.bounds.size.width
static let SCREEN_HEIGHT = UIScreen.main.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.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
static let IS_IPHONE_5 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
static let IS_IPHONE_6 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
static let IS_IPHONE_6P = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
static let IS_IPHONE_X = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 812
static let IS_IPAD = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0
static let IS_IPAD_PRO = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1366.0
static let IS_IPHONE_XSMAX = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 2688
static let IS_IPHONE_XR = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 1792
}
Run Code Online (Sandbox Code Playgroud)
针对 iPhone 14、14 Plus、14 Pro 和 14 Pro Max 进行了更新
针对 iPhone 13 Mini、13、13 Pro 和 13 Pro Max 进行了更新
public extension UIDevice {
var iPhone: Bool { UIDevice.current.userInterfaceIdiom == .phone }
var iPad: Bool { UIDevice().userInterfaceIdiom == .pad }
enum ScreenType: String {
case iPhones_4_4S = "iPhone 4 or iPhone 4S"
case iPhones_5_5s_5c_SE = "iPhone 5, iPhone 5s, iPhone 5c or iPhone SE"
case iPhones_6_6s_7_8 = "iPhone 6, iPhone 6S, iPhone 7 or iPhone 8"
case iPhones_6Plus_6sPlus_7Plus_8Plus = "iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus or iPhone 8 Plus"
case iPhones_X_XS = "iPhone X or iPhone XS"
case iPhone_XR_11 = "iPhone XR or iPhone 11"
case iPhone_XSMax_ProMax = "iPhone XS Max or iPhone Pro Max"
case iPhone_11Pro = "iPhone 11 Pro"
case iPhone_12_12Pro_13_13Pro_14 = "iPhone 12 or 12 Pro or 13 or 13 Pro or 14"
case iPhone_14Pro = "iPhone 14 Pro"
case iPhone_12ProMax_13ProMax_14Plus = "iPhone 12 Pro Max or 13 Pro Max or 14 Plus"
case iPhone_14ProMax = "iPhone 14 Pro Max"
case iPhone12Mini_13Mini = "iPhone 12 Mini or 13 Mini"
case unknown
}
var screenType: ScreenType {
guard iPhone else { return .unknown }
switch UIScreen.main.nativeBounds.height {
case 960:
return .iPhones_4_4S
case 1136:
return .iPhones_5_5s_5c_SE
case 1334:
return .iPhones_6_6s_7_8
case 1792:
return .iPhone_XR_11
case 1920, 2208:
return .iPhones_6Plus_6sPlus_7Plus_8Plus
case 2340:
return .iPhone12Mini_13Mini
case 2426:
return .iPhone_11Pro
case 2436:
return .iPhones_X_XS
case 2532:
return .iPhone_12_12Pro_13_13Pro_14
case 2688:
return .iPhone_XSMax_ProMax
case 2778:
return .iPhone_12ProMax_13ProMax_14Plus
case 2556:
return .iPhone_14Pro
case 2796:
return .iPhone_14ProMax
default:
return .unknown
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40872 次 |
最近记录: |