2017-09-14 18 views
7

डिफ़ॉल्ट रूप से एक iPhone एक्स पर स्थिति बार इस तरह दिखता है:कैसे iOS पर iPhone एक्स पर एक काले रंग की प्रस्थिति प्राप्त करने के लिए 11

enter image description here

लेकिन मैं इस लक्ष्य को हासिल करना चाहते हैं:

enter image description here

मैंने preferredStatusBarStyle को lightContent पर सेट करने का प्रयास किया लेकिन यह केवल स्टेटसबार के पीछे पृष्ठभूमि को सेट करने के बाद ही काम करता था।

गोलाकार कोनों को ठीक करने के लिए मैंने गोलाकार कोनों के साथ एक और सबव्यू जोड़ना समाप्त कर दिया।

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.backgroundColor = .black 

     let roundedView = UIView(
      frame: CGRect(
       x: 0, 
       y: UIApplication.shared.statusBarFrame.height, 
       width: view.frame.width, 
       height: view.frame.height 
      ) 
     ) 
     roundedView.layer.cornerRadius = 10 
     roundedView.layer.masksToBounds = true 
     roundedView.backgroundColor = .white 
     view.addSubview(roundedView) 

     let label = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 60)) 
     label.text = "Black statusbar!" 
     label.textAlignment = .center 
     roundedView.addSubview(label) 
    } 

    override var preferredStatusBarStyle: UIStatusBarStyle { 
     return .lightContent 
    } 
} 

मुझे आश्चर्य है कि यह सबसे अच्छा तरीका है .. इसे प्राप्त करने का एक बेहतर तरीका होना चाहिए।


अद्यतन

यह एक भयानक विचार क्योंकि है:

मत करो:

  • @Moritz के रूप में अंक बाहर, Apple's guidelines स्पष्ट रूप से इस मनाही मा कुंजी प्रदर्शन सुविधाओं पर विशेष ध्यान दें या कॉल करें। स्क्रीन के शीर्ष और निचले हिस्से में काले सलाखों को रखकर होम स्क्रीन तक पहुंचने के लिए डिवाइस के गोलाकार कोनों, सेंसर आवास, या सूचक को छिपाने का प्रयास न करें। इन क्षेत्रों में विशेष ध्यान देने के लिए ब्रैकेट, बेजेल, आकार या निर्देशक पाठ जैसे दृश्य सजावट का उपयोग न करें।

  • दृश्य के शीर्ष पर गोलाकार कोनों अच्छा लग सकता है, लेकिन आप कोड में अपवाद जोड़ना सुनिश्चित गोलाकार कोनों अन्य iPhones पर नहीं दिखाए जाते हैं बनाने के लिए करना होगा। आपको इसे अपने सभी व्यू कंट्रोलर/स्टोरीबोर्ड में रखना होगा .. यह इतना अच्छा नहीं है।

  • दृश्य के नीचे गोलाकार कोनों सीधे स्क्रीनशॉट में दिखाई देंगे, लेकिन शीर्ष पर कोनों (मैन्युअल रूप से सेट) नहीं होंगे। जब उपयोगकर्ता आपका ऐप साझा करेंगे तो यह बदसूरत होगा।

+1

सुरक्षित क्षेत्र पश्च संगतता के साथ पहले से ही मुसीबत की एक पूरी बहुत कुछ पैदा कर रही है, यह सिर्फ में ईंधन होने जा रहा है आग। – Annjawn

उत्तर

10

सुरक्षित क्षेत्र लेआउट आपकी समस्या का समाधान है।

मैंने अपनी मौजूदा परियोजनाओं में समाधान का पालन करने की कोशिश की और यह ठीक काम करता है।

  • अपने दृश्य नियंत्रक के मुख्य दृश्य में काले रंग का रंग (या जो भी आप चाहते हैं) सेट करें।
  • अब बाल दृश्य (सफेद पृष्ठभूमि के साथ) जोड़ें और सुरक्षित क्षेत्र लेआउट के सापेक्ष इसकी बाधाएं सेट करें (या एक्सकोड संस्करण 9 से नीचे है तो शीर्ष और नीचे लेआउट मार्गदर्शिका का पालन करें)।
  • मुख्य दृश्य के रूप में इस बच्चे के दृश्य (सफेद पृष्ठभूमि के साथ) पर विचार करें और इसके साथ आगे की प्रक्रिया को संसाधित करें।

यहां परिणाम के साथ नमूना स्नैपशॉट है, सुरक्षित क्षेत्र लेआउट को सक्षम या अक्षम करके, मैंने परीक्षण और कार्यान्वित किया।

एफवाईआई: इन स्नैपशॉट्स में, मुख्य दृश्य में लाल पृष्ठभूमि होती है और बच्चे के दृश्य में नीली पृष्ठभूमि रंग होती है।

सुरक्षित क्षेत्र लेआउट: enter image description here

autolayout

enter image description here

+0

धन्यवाद! मैंने अपना प्रश्न अपडेट किया, शायद यह सब के बाद इतना अच्छा विचार नहीं है। लेकिन अभ्यास जारी रखने के लिए: यह कोड के साथ ऐसा करने के बाद थोड़ा बेहतर है, लेकिन आपको अभी भी प्रत्येक व्यू कंट्रोलर के लिए इसे दोहराना होगा .. आदर्श नहीं है? – Tieme

+0

मैंने एक आईबी डिज़ाइन करने योग्य कस्टम व्यू इंटरफेस क्लास बनाया और इसका इस्तेमाल किया .. आप और आपका दृष्टिकोण बिल्कुल सही है, कि प्रत्येक दृश्य नियंत्रक के लिए मैन्युअल अभ्यास की आवश्यकता हो सकती है। लेकिन इसे मैन्युअल रूप से करना मुश्किल नहीं होगा। और, यह विचार अपने दिशानिर्देशों के भीतर सेब प्रतिबंधों से परे अपने इंटरफ़ेस क्षेत्रों पर नियंत्रण रख सकता है। इस चरण में, जब तक हम स्थायी समाधान नहीं पाते, यह अच्छा हो सकता है। आपका दिन शुभ हो :) – Krunal

संबंधित मुद्दे