2017-10-07 108 views
6

看來如果我在至少XCode中觸發Use Safe Area Layout Guides,將出現"Safe area layout guide before ios 9".錯誤,這是否意味着支持這兩種設備是不可能的?有什麼建議?謝謝。這是否可以在同一個項目中支持iPhone X和iOS 8?

+0

在所有的測試中,我所做的答案是否定的我,直到我決定去檢查掙扎的。有多少用戶仍然使用iOS 8用於我的應用程序,並且它沒有。 – MwcsMac

回答

3

這是完全可以支持iPhone X與iOS 8的最低目標(事實上,這正是我們目前在汗學院的應用程序。)

我們所做的是在我們的斯威夫特應用safeAreaInsets使用#available功能,像這樣的代碼:

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

從你的問題,這聽起來像你正在辯論是否使用複選框在故事板,使安全區的插圖。如果啓用了安全區域插入功能,我不確定是否有可能讓故事板支持iOS 8(我懷疑這是不可能的)。但是,您始終可以存儲對佈局約束的引用,並使用上面的#available函數更新代碼中的常量。

(在Objective-C,代碼看起來幾乎相同,只是格式化是這樣的:

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