2017-10-07 2 views
6

Es scheint, dass ein "Safe area layout guide before ios 9". Fehler auftreten wird, wenn ich die Use Safe Area Layout Guides in den wenigsten XCode auslösen, bedeutet es, die Unterstützung beider Geräte ist nicht möglich? Irgendein Rat? Vielen Dank.Ist es möglich, iPhone X und iOS 8 in demselben Projekt zu unterstützen?

+0

In all den Tests ich die Antwort getan haben, ist nicht ich mit gekämpft, bis ich entschieden Scheck zu gehen. Wie viele Nutzer haben immer noch iOS 8 für meine App verwendet und es gab keine. – MwcsMac

Antwort

3

Es ist durchaus möglich, iPhone X mit einem Mindestziel von iOS 8 zu unterstützen (In der Tat ist das, was wir derzeit in der Khan Academy App haben.)

Was wir tun, ist die safeAreaInsets in unserem Swift anwenden Code mit der #available Funktion, etwa so:

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

Aus Ihrer Frage, es klingt wie Sie diskutieren, ob das Kontrollkästchen in einem Storyboard verwenden, um die sicheren Bereich Einsätze zu ermöglichen. Ich bin mir nicht sicher, ob es für ein Storyboard möglich ist, iOS 8 zu unterstützen, wenn sichere Bereichseinsätze aktiviert sind (ich vermute, dass das nicht möglich ist). Sie können jedoch immer einen Verweis auf eine Layouteinschränkung speichern und die Konstante in Ihrem Code mithilfe der obigen Funktion #available aktualisieren.

(In Objective-C sieht der Code fast identisch, formatieren Sie es einfach so:

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