2016-11-29 8 views
8

Kullanıcı ekranının yakınlaştırılmış moduna ayarlanıp ayarlanmadığını nasıl kontrol edebileceğimi merak ediyorum. Ayrıcaswift 3 iphone 6/7 ve 6/7plus ekranının standart veya yakınlaştırılmış modda olup olmadığını kontrol edin

public var isZoomed: Bool { 
    return UIScreen.main().scale < UIScreen.main().nativeScale 
} 

Ve:

Bunu denedim bunlardan

#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
#define IS_IPHONE_5 (IS_IPHONE && ([[UIScreen mainScreen] bounds].size.height == 568.0) && ((IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale) || !IS_OS_8_OR_LATER)) 
#define IS_STANDARD_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale) 
#define IS_ZOOMED_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale > [UIScreen mainScreen].scale) 
#define IS_STANDARD_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0) 
#define IS_ZOOMED_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale < [UIScreen mainScreen].scale) 

Ama hiçbiri çalışır.

Bu nedenle, aygıt çalışırken aygıtın yakınlaştırılıp uzaklaştırılmadığını veya yakınlaştırılmaya zorlanmadığını algılamanın bir yolu var mı?

+0

bu işe olsaydı bilmiyorum, o yüzden cevap olarak bu gönderme değilim. Waterline87'in iPhone5s == iPhone 6 yakınlaştırması ve iPhone6 ​​== iPhone6 ​​artı zoom ile ilgili bu 2014 Reddit konusuna ([link] https://www.reddit.com/r/apple/comments/2jcvnj/iphone_6_plus_zoomed_vs_standard/) ilerleyin. İki şeyi - gerçek cihaz ve tam ekran sınırlarını - karşılaştırabilir misiniz ve yakınlaştırılmış bir ekranla gelebilir misiniz? – dfd

+0

@dfd Yardım ettiğin için teşekkürler ama hızlı çalışan 3 bir çözüm buldum ve yayınladım – user2636197

+0

Merak ediyorum neden bunu bilmelisin? Bir uygulamanın aslında hangi cihazda olduğunu veya ekranın yakınlaştırılmış olup olmadığını bilmesi son derece nadirdir. Sorunuzdaki makroları kullanan çoğu uygulama yanlış yazılmıştır. – rmaddy

cevap

8

Çalışma hızlı 3 çözeltisi:

if (UIScreen.main.bounds.size.height == 667.0 && UIScreen.main.nativeScale < UIScreen.main.scale){ 
    print("iphone 6 plus") 
} else { 
    print("none zoomed 6 plus") 
} 

if (UIScreen.main.bounds.size.height == 568.0 && UIScreen.main.nativeScale > UIScreen.main.scale) { 
    print("zoomed iphone 6") 
} else { 
    print("none zoomed") 
} 
+0

Bu cevap yeşil onay işaretini almalıdır. Swift 3 & 4'te mükemmel çalışıyor. –

İlgili konular