2017-03-28 13 views
7

मैं नीली या कुछ अन्य रंग की तरह स्टेटस बार का रंग बदलने की कोशिश कर रहा हूं।स्टेटस बार का रंग बदलना

क्या यह संभव है, या ऐप्पल इसे अनुमति नहीं देता है?

+1

दो उत्तरों (टिप्पणियों के साथ) के आधार पर, उत्तर (जैसे मैंने सोचा) ** ** ** है। आप (1) स्टेटस बार का फ़ॉन्ट रंग बदल सकते हैं या (2) निजी एपीआई का उपयोग कर सकते हैं, लेकिन आप ऐप्पल को अपने ऐप को अस्वीकार करने का मौका ले रहे हैं (या बदतर, इसे सड़क के नीचे कहीं भी खारिज कर दिया गया है)। – dfd

उत्तर

7

Plist में सबसे पहले NO

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView 
    if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) { 
     statusBar.backgroundColor = UIColor.blue 
    } 
    UIApplication.shared.statusBarStyle = .lightContent 

    return true 
} 

उत्पादन स्क्रीनशॉट को View controller-based status bar appearance सेट

नीचे

enter image description here

+2

यह निजी, अनियंत्रित API का उपयोग कर रहा है जो ऐप समीक्षा पास नहीं कर सकता है। इस तरह की चीजें करने का कभी अच्छा विचार नहीं है। यह क्रैश होने की संभावना है, खासतौर पर लिखे गए, जब निजी एपीआई कुछ भविष्य में आईओएस अपडेट में बदल जाता है। – rmaddy

+0

मेरे पास एक ऐप का कारण खारिज कर दिया गया था, जबकि दूसरा बस ठीक से स्वीकार किया गया था। वे इसे निजी एपीआई उपयोग पर विचार करते हैं, इसलिए आप समीक्षा प्रक्रिया के दौरान किस्मत के अधीन हैं :) - @Sebyddd – byJeevan

+0

मैं निश्चित रूप से ** आपके उत्तर में यह तथ्य जोड़ूंगा। – dfd

6

नहीं, यह संभव नहीं रेडीमेड सार्वजनिक API के साथ है।

लेकिन iOS 7 के रिलीज के साथ, आप स्थिति पट्टी का स्वरूप बदलने के लिए अनुमति होती है। इसलिए मैं यहां अपना कामकाज पोस्ट कर रहा हूं।

एक दृश्य नियंत्रक से preferredStatusBarStyle अधिभावी द्वारा:

-(UIStatusBarStyle)preferredStatusBarStyle 
{ 
    return UIStatusBarStyleLightContent; 
} 

वैकल्पिक रूप से, आप UIApplication statusBarStyle विधि का उपयोग कर स्थिति पट्टी शैली सेट कर सकते हैं। ऐसा करने के लिए, "नियंत्रक-आधारित स्थिति बार उपस्थिति देखें" नामक एक नई कुंजी डालें और मान को NO पर सेट करें। enter image description here

"नियंत्रक-आधारित स्थिति बार उपस्थिति देखें" अक्षम करके, आप निम्न कोड का उपयोग कर स्थिति बार शैली सेट कर सकते हैं।

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

अंत में, जैसे

नीचे
[[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]]; 
+0

अपने उत्तर को स्पष्ट करने के लिए, क्या यह स्टेटस बार ** पृष्ठभूमि ** रंग ** ** विशिष्ट ** रंग में बदलता है? – dfd

+0

इस संपादन को कोई मतलब नहीं है। ओपी ने नेविगेशन बार नहीं, स्टेटस बार बदलना चाहता है। – dfd

+0

कृपया इस लिंक को देखें http://www.appcoda.com/customize-navigation-status-bar-ios-7/ – byJeevan

3


आप आवेदन लॉन्च के दौरान या आपके विचार नियंत्रक के viewDidLoad दौरान स्थिति पट्टी के लिए पृष्ठभूमि रंग सेट कर सकते हैं UINavigationBar संपत्ति टिंट रंग बदल जाते हैं।

enter image description here

यहाँ Apple Guidelines/Instruction स्थिति पट्टी परिवर्तन के बारे में है:

extension UIApplication { 

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

} 

// 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.red 
     return true 
    } 
} 


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.red 
    } 

} 



यहाँ परिणाम है। स्टेटस बार में केवल डार्क & प्रकाश (जबकि & काला) की अनुमति है।

यहाँ है - स्थिति पट्टी शैली बदलने के लिए कैसे:

आप स्थिति पट्टी शैली सेट करना चाहते हैं, अनुप्रयोग स्तर फिर अपने `.plist 'फ़ाइल में NO को UIViewControllerBasedStatusBarAppearance निर्धारित किया है।

अगर आप स्थिति पट्टी शैली स्थापित करने के लिए दृश्य नियंत्रक स्तर पर वान फिर इन चरणों का पालन करें:

  1. .plist फ़ाइल में YES को UIViewControllerBasedStatusBarAppearance सेट, आप केवल UIViewController स्तर पर स्थिति पट्टी शैली निर्धारित करने की आवश्यकता है, तो । आपके विचार नियंत्रक में setNeedsStatusBarAppearanceUpdate

  2. ओवरराइड preferredStatusBarStyle -

  3. viewDidLoad में समारोह जोड़ें।

-

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.setNeedsStatusBarAppearanceUpdate() 
} 

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return .lightContent 
} 

सेट .plist की स्थिति पट्टी शैली सेटअप स्तर के अनुसार मूल्य। enter image description here

2

यहाँ मेरी समाधान नहीं है: एक UIView बनाने के लिए, कृत्रिम स्थिति पट्टी पृष्ठभूमि
1. बनाएँ एक UIView

// status bar's height is 20.0pt 
CGRect frame = CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 20.0); 
UIView *fakeStatusBarBG = [[UIView alloc] initWithFrame:frame]; 
fakeStatusBarBG.backgroundColor = [UIColor yourColor]; 

2.Add इसे करने के लिए के रूप में देखें नियंत्रक के अपने रूट दृश्य में जोड़ने आपके विचार नियंत्रक के रूट दृश्य

// self is your view controller, make sure fakeStatusBarBG is the top subview in your view hierarchy 
[self.view insertSubview:fakeStatusBarBG aboveSubview:yourTopSubview]; 

आपके जाने।

3. (अतिरिक्त) स्टेटस बार पर सामग्री रंग बदलें, केवल सफेद या काला।

- (UIStatusBarStyle)preferredStatusBarStyle 
{ 
    if (youWantWhiteColor) 
    { 
     return UIStatusBarStyleLightContent; 
    } 
    return UIStatusBarStyleDefault; 
} 

इस तरीके को निजी एपीआई का उपयोग नहीं करता, इसलिए आप सुरक्षित हैं। :-)

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