कुछ नेटवर्क ऑपरेशंस करते समय, मैं एक मोडल व्यू कंट्रोलर (एमबी प्रोग्रेसएचयूडी के समान लेकिन दृश्य नियंत्रक के समान) प्रस्तुत करता हूं ताकि उपयोगकर्ता इंटरैक्शन को रोका जा सके और प्रगति का संकेत दिया जा सके।स्टेटस बार रंग बदलने के बिना व्यू कंट्रोलर प्रस्तुत करना, जैसे UIAlertController
व्यू कंट्रोलर में modalPresentationStyle = .Custom
है और एक संक्रमण प्रतिनिधि और कस्टम प्रस्तुति नियंत्रक का उपयोग करके एनिमेटेड है। संक्रमण को एनिमेट करने से परे उनके पास प्रस्तुति को चलाने में कोई कस्टम क्रिया नहीं है।
मेरी समस्या यह है कि जब भी दृश्य नियंत्रक प्रस्तुत किया जाता है, तो यह स्टेटस बार रंग काला हो जाता है। मैं preferredStatusBarStyle
को हमेशा .LightContent
वापस करने के लिए ओवरराइड कर सकता हूं लेकिन कभी-कभी यह दृश्य नियंत्रक .Default
के साथ व्यू कंट्रोलर पर प्रस्तुत किया जाता है और मैं इसे वहां भी बदलना नहीं चाहता हूं। असल में, मैं UIAlertController
के समान व्यवहार करना चाहता हूं।
मैं स्थिति पट्टी स्थान से बाहर प्रस्तुत दृश्य नियंत्रक स्थानांतरित करने के लिए प्रस्तुति नियंत्रक को विन्यस्त की कोशिश की है:
private class SEUIProgressControllerPresentationController: UIPresentationController {
override func shouldPresentInFullscreen() -> Bool {
return false
}
private override func frameOfPresentedViewInContainerView() -> CGRect {
return super.frameOfPresentedViewInContainerView().insetBy(dx: 40, dy: 100)
}
...
}
ये सेटिंग्स प्रस्तुत नियंत्रक के शीर्ष के लिए कदम कर स्टेटस बार से बाहर है लेकिन स्टेटस बार अभी भी प्रभावित है। क्या कोई ऐसी संपत्ति है जो मुझे याद आ रही है जो मेरे व्यू कंट्रोलर को स्टेटस बार शैली को अपडेट करने से रोक देगी?