2017-10-11 59 views
6

iPhone X'i desteklemek için bir uygulamayı uyarlıyorum. Özel bir görünüm denetleyicisi olan bir paylaşım uzantım var. Cihazımın güvenli alan bilgisini bilmem gerekiyor, ancak UIApplication.shared.keyWindow numaralı telefonu arayarak UIWindow numaralı telefondan verilen safeAreaInsets yönteminin UIApplication.shared orada görünmediğinden Paylaşım Uzantısında bulunmuyor. Paylaşım Uzantımdaki safeAreaInsets özelliğinden değerleri bilmek için bir yol var mı?Güvenli alan girişlerini saptama Paylaş Paylaş Paylaş

cevap

1

safeAreaInsets herhangi bir UIView üzerinde bir özelliktir; Bunu, Paylaşım Uzantınız'da kullanabilirsiniz. SafeAreaInsets için UIApplication.shared.keyWindow'a sormanız gerekmez; aslında, muhtemelen bunu yapmak istemezsiniz çünkü keyWindow bir UINavigationController veya UITabBarController içeriyorsa, bunlar safeAreaInsets'i etkiler. Eğer UIView hiyerarşisindeki derin bir görünümü varsa

, onun safeAreaInsets hiyerarşisinde atası görünümlerini incelemek ve bunlardan herhangi sizin görünümü ile örtüşen safeAreaInsets varsa görerek hesaplanır.

public override func safeAreaInsetsDidChange() { 
    if #available(iOS 11.0, *) { 
     super.safeAreaInsetsDidChange() 
     self.setNeedsUpdateConstraints() // or self.setNeedsLayout, etc. 
    } 
} 
: -

Sen safeAreaInsets olduklarını, ancak, bulabilirsiniz

başlangıçta UIEdgeInsets.zero ne yapmak isteyeceksiniz gibi pek, UIView.safeAreaInsetsDidChange() veya UIViewController.viewSafeAreaInsetsDidChange() uygulamak olduğunu