2017-10-07 43 views
6

Use Safe Area Layout Guides'u en az XCode'da tetiklediğimde "Safe area layout guide before ios 9". hatası oluşacak gibi görünüyor, bu iki aygıtı desteklemenin mümkün olmadığı anlamına mı geliyor? Herhangi bir tavsiye? Teşekkürler.iPhone X ve iOS 8'i aynı projede desteklemek mümkün mü?

+0

Cevabın hayır ben çek gitmeye karar verene kadar mücadele olduğunu yapmış testleri tümünde. Uygulamam için kaç kullanıcı hala iOS 8 kullanıyor ve bu hiç yoktu. – MwcsMac

cevap

3

O iOS 8. minimum hedefle iPhone X desteklemek için tamamen mümkündür (Aslında, bu şu anda Khan Academy uygulamasında da bu.)

Yapmamız bizim Swift içinde safeAreaInsets uygulamak olduğunu böylece gibi #available işlevini kullanarak kodu: güvenli alan-parçalar etkinleştirmek için bir Film Şeridi'nde onay kutusunu kullanılıp kullanılmayacağını tartışmaya konum gibi Sorunuzun itibaren

public override func safeAreaInsetsDidChange() { 
    if #available(iOS 11.0, *) { 
     super.safeAreaInsetsDidChange() 
     self.contentCatalogHeaderView?.safeAreaInsetsTopOverride = safeAreaInsets.top 
     self.collectionViewLayout.safeAreaInsetsTop = safeAreaInsets.top 
    } 
} 

, bu sesler. Güvenli Alan Anlatmaları etkinleştirildiğinde Storyboard'un iOS 8'i destekleyip desteklemeyeceğinden emin değilim (bunun mümkün olmadığından şüpheleniyorum). Ancak, her zaman bir düzen kısıtlamasına bir başvuru depolayabilir ve yukarıdaki #available işlevini kullanarak kodunuzdaki sabitini güncelleyebilirsiniz.

(Objective-C, kod neredeyse aynı görünür, sadece bu gibi biçimlendirmek:

- (void)viewSafeAreaInsetsDidChange { 
    if (@available(iOS 11.0, *)) { 
     [super viewSafeAreaInsetsDidChange]; 
     [self.view setNeedsLayout]; 
    } 
}