2017-10-03 64 views
10

xcode 9 ile bazı yeni denetleyici denetleyicileri oluşturmak için şimdi bir kaç güvenli alanım var.ios için güvenli olmayan alan arka plan rengi nasıl ayarlanır 11

Şu anda, tam korumalı bir şey yapmaya çalışıyorum, yani (her zaman durum çubuğunu görüntülediğimden) güvensiz alanı koruyarak ve arka plan rengini tam ekrana taşıyarak (kullandığım şeye benzer bir davranışı korumak için) var).

Ek bir notta, bu, sistem kontrollerini etkilediğinden, bazı sistemleriniz de siyah olarak görüntülenecek olan alt güvenli olmayan alana koyacağınız için de etkiler.

Arka plan renginin, güvensiz alanın gerisinde kalması için bir yol bulamıyorum. Herhangi bir düşünce?

cevap

8

Bir hacky numara gibi görünüyor ama bunu deneyebilirsiniz arka plan rengi için ancak ui görünümü için güvenli alana Superview için ayarlanması gerekir:
Sen Uygulama başlatıldığında veya görünüm denetleyicinizin viewDidLoad sırasında durum çubuğu için arka plan rengini ayarlayabilir. İşte benim için aşağıdaki şekillerde çalışır. İşte

extension UIApplication { 

    var statusBarView: UIView? { 
     return value(forKey: "statusBar") as? UIView 
    } 

} 


or 
// Set it from your view controller if you've view controller based statusbar 
class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     UIApplication.shared.statusBarView?.backgroundColor = UIColor.green 
    } 

} 


// Set upon application launch, if you've application based status bar 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     UIApplication.shared.statusBarView?.backgroundColor = UIColor.green 
     return true 
    } 
} 



sonucudur:

enter image description here

+1

Harika! Teşekkürler dostum –

5

Farklı kısıtlamalar uygulamak zorundasınız. Arka plan renginiz, güvenli alanın ötesine, süper görüntüye kadar uzanmalıdır. Yani kısıtlamaları (düğmeler, tableViews ve benzeri)

+0

Kahretsin, –

+1

Eğer konteyner marjı, varsayılan olarak güvenli alana lanet sistem seti top almak için ctrl sayesinde sahip got it Bunu IB'de yapıyorsunuz, ayrıca Kısıtlama Belgenizde kısıtlamalarınızı seçebilir ve Superview'den Safe Area'a ve böylece – pesch

+0

'a geçiş için Attributes Inspector'ı kullanabilirsiniz. Bunu kontrol edeceğim. –