tipos programar programación objective los lenguajes lenguaje entre diferencias datos básicos objective-c swift

objective c - programar - cómo verificar el tamaño de pantalla de iphone 4 y iphone 5 programáticamente en swift



swift(lenguaje de programación) (7)

Además de la forma propuesta, una forma de hacerlo es usar la estructura de la siguiente manera.

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_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 }

Avíseme si ayuda.

Necesito reemplazar este Objective-C por Swift. ¿Alguien tiene alguna sugerencia sobre cómo transferirlo?

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { CGSize result = [[UIScreen mainScreen] bounds].size; if(result.height == 480) { // iPhone Classic } if(result.height == 568) { // iPhone 5 } }


Solo para agregar a https://.com/a/27776671/1766242

Te permite escribir

if UIDevice.isScreen35inch() { // Do something to fit small screen } else { // do something else for larger screens }

Vea abajo

extension UIDevice { var iPhone: Bool { return UIDevice().userInterfaceIdiom == .Phone } enum ScreenType: String { case iPhone4 case iPhone5 case iPhone6 case iPhone6Plus case Unknown } var screenType: ScreenType? { guard iPhone else { return nil } switch UIScreen.mainScreen().nativeBounds.height { case 960: return .iPhone4 case 1136: return .iPhone5 case 1334: return .iPhone6 case 2208: return .iPhone6Plus default: return nil } } // helper funcs static func isScreen35inch() -> Bool { return UIDevice().screenType == .iPhone4 } func isScreen4inch() -> Bool { return UIDevice().screenType == .iPhone5 } func isScreen47inch() -> Bool { return UIDevice().screenType == .iPhone6 } func isScreen55inch() -> Bool { return UIDevice().screenType == .iPhone6Plus }}


Solución alternativa con extensión UIScreen (iOS 8 y posterior):

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 } }

Uso:

if UIScreen.mainScreen().sizeType == .iPhone4 { // Make specific layout for small devices. }


También puedes probar este código a continuación:

if (IS_IPHONE4) { imgHeight.constant = 150; } else if (IS_IPAD) { imgHeight.constant = 300; } else if (IS_IPHONE5) { imgHeight.constant = 170; } else { imgHeight.constant = 200; }

Gracias.


intenta usar esto:

Cree un archivo UIViewController + Extension.swift : y coloque en el siguiente código:

enum DeviceTypeModel{ case iphoneX case iphone8Plus case iphone8 case iphoneSE //SE is the like iphone 5 and iphone 5s case iphone4s } extension UIViewController{ func runOnTheDeviceType(_ completion: (DeviceTypeModel) -> Void) { if UIDevice().userInterfaceIdiom == .phone{ switch UIScreen.main.nativeBounds.height{ case 2436: completion(.iphoneX) case 1920: completion(.iphone8Plus) case 1334: completion(.iphone8) case 1136: completion(.iphoneSE) default: completion(.iphone4s) } } } }

y úsala en tu viewController.swift así:

class ChatViewController: UIViewController{ override func viewDidLoad() { super.viewDidLoad() runOnTheDeviceType { devices in switch devices{ case .iphoneSE: //do something case .iphone4s: //do something default: //do something } } } }

puedes agregar más casos si quieres hacerlo. Disfrútala.


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 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 iPhoneX = "iPhone X" 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 1920, 2208: return .iPhones_6Plus_6sPlus_7Plus_8Plus case 2436: return .iPhoneX default: return .unknown } } }

print("screenType:", UIDevice.current.screenType.rawValue)


if UIDevice().userInterfaceIdiom == .Phone { switch UIScreen.mainScreen().bounds.size.height{ case 480: print("iPhone 4S") case 568: print("iPhone 5") default: print("other models") } }

UIScreen.mainScreen (). Bounds.size.height proporcionará la altura del dispositivo. Al usar este valor, podemos verificar el dispositivo iPhone en particular.