Как проверить размер экрана iphone 4 и iphone 5 программно в быстром
Мне нужно заменить этот 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
}
}
Ответы
Ответ 1
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)
Ответ 2
Альтернативное решение с расширением 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
}
}
Использование:
if UIScreen.mainScreen().sizeType == .iPhone4 {
// Make specific layout for small devices.
}
Ответ 3
Просто добавьте fooobar.com/questions/56019/...
Позволяет писать
if UIDevice.isScreen35inch() {
// Do something to fit small screen
} else {
// do something else for larger screens
}
См. ниже
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
}}
Ответ 4
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 обеспечит высоту устройства. Используя это значение, мы можем проверить конкретное устройство iphone.
Ответ 5
В дополнение к предложенному пути, один из способов сделать это - использовать структуру следующим образом.
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
}
Сообщите мне, если это поможет.