ios - आईओएस 7 पर स्टेटस बार पृष्ठभूमि रंग और टेक्स्ट रंग कैसे बदलें?




ios7 uicolor (12)

1) UIViewControllerBasedStatusBarAppearance को प्ले में YES पर सेट करें

2) [self setNeedsStatusBarAppearanceUpdate]; एक [self setNeedsStatusBarAppearanceUpdate];

3) निम्न विधि जोड़ें:

 -(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
 } 

अद्यतन करें:
developers-guide-to-the-ios-7-status-bar

मेरा वर्तमान एप्लिकेशन आईओएस 5 और 6 पर चलता है।

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

इसके कारण मैं स्टेटस बार और नेविगेशन बार के बीच अंतर करने में सक्षम नहीं हूं।

मैं स्टेटस बार को आईओएस 5 और 6 में देखने के लिए कैसे बना सकता हूं, जो काला पृष्ठभूमि रंग और सफेद टेक्स्ट रंग के साथ है? मेरे द्वारा इसे योजनाबद्ध तरीके से इसे कैसे किया जा सकता है?


iTroid23 समाधान मेरे लिए काम किया। मैं स्विफ्ट समाधान चूक गया। तो शायद यह सहायक है:

1) मेरी plist में मुझे यह जोड़ना पड़ा:

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

2) मुझे "setNeedsStatusBarAppearanceUpdate" कॉल करने की आवश्यकता नहीं थी।

3) तेजी से मुझे इसे अपने UIViewController में जोड़ना पड़ा:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

आईओएस 7 में स्टेटस बार में पृष्ठभूमि नहीं है, इसलिए यदि आप इसके पीछे एक ब्लैक 20 पीएक्स-उच्च दृश्य डालते हैं तो आप आईओएस 6 के समान परिणाम प्राप्त करेंगे।

इसके अलावा आप इस विषय पर और जानकारी के लिए आईओएस 7 यूआई संक्रमण गाइड पढ़ना चाहेंगे।


आईओएस 9 पर स्विफ्ट 2.0 के मामले में

ऐप प्रतिनिधि में निम्नलिखित रखें, फ़िनिशलांचिंगविथऑप्शन के तहत:

    let view: UIView = UIView.init(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, 20))

    view.backgroundColor = UIColor.blackColor()  //The colour you want to set

    view.alpha = 0.1   //This and the line above is set like this just if you want 
                          the status bar a darker shade of 
                          the colour you already have behind it.

    self.window!.rootViewController!.view.addSubview(view)

इसे अपने ViewDidLoad विधि में लिखें:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
    self.edgesForExtendedLayout=UIRectEdgeNone;
    self.extendedLayoutIncludesOpaqueBars=NO;
    self.automaticallyAdjustsScrollViewInsets=NO;
}

यह मेरे लिए और अन्य यूआई गलत जगहों के लिए स्टेटस बार रंग तय करता है।


कृपया इसे आजमाएं। इस कोड का प्रयोग अपनी एपडिलेगेट क्लास "didFinishLaunchingWithOptions" फ़ंक्शन में करें

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; [application setStatusBarHidden:NO]; UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) { statusBar.backgroundColor = [UIColor blackColor]; }


पृष्ठभूमि के लिए आप आसानी से एक दृश्य जोड़ सकते हैं, उदाहरण के लिए:

 UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.1];
    [navbar addSubview:view];

जहां "navbar" एक UINavigationBar है।

उम्मीद है यह आपकी मदद कर सकता है!



यदि आप UINavigationController का उपयोग कर रहे हैं, तो आप इस तरह के एक एक्सटेंशन का उपयोग कर सकते हैं:

extension UINavigationController {
    private struct AssociatedKeys {
        static var navigationBarBackgroundViewName = "NavigationBarBackground"
    }

    var navigationBarBackgroundView: UIView? {
        get {
            return objc_getAssociatedObject(self,
                                        &AssociatedKeys.navigationBarBackgroundViewName) as? UIView
        }
        set(newValue) {
             objc_setAssociatedObject(self,
                                 &AssociatedKeys.navigationBarBackgroundViewName,
                                 newValue,
                                 .OBJC_ASSOCIATION_RETAIN)
        }
    }

    func setNavigationBar(hidden isHidden: Bool, animated: Bool = false) {
       if animated {
           UIView.animate(withDuration: 0.3) {
               self.navigationBarBackgroundView?.isHidden = isHidden
           }
       } else {
           navigationBarBackgroundView?.isHidden = isHidden
       }
    }

    func setNavigationBarBackground(color: UIColor, includingStatusBar: Bool = true, animated: Bool = false) {
        navigationBarBackgroundView?.backgroundColor = UIColor.clear
        navigationBar.backgroundColor = UIColor.clear
        navigationBar.barTintColor = UIColor.clear

        let setupOperation = {
            if includingStatusBar {
                self.navigationBarBackgroundView?.isHidden = false
                if self.navigationBarBackgroundView == nil {
                    self.setupBackgroundView()
                }
                self.navigationBarBackgroundView?.backgroundColor = color
            } else {
                self.navigationBarBackgroundView?.isHidden = true
                self.navigationBar.backgroundColor = color
            }
        }

        if animated {
            UIView.animate(withDuration: 0.3) {
                setupOperation()
            }
        } else {
            setupOperation()
        }
    }

    private func setupBackgroundView() {
        var frame = navigationBar.frame
        frame.origin.y = 0
        frame.size.height = 64

        navigationBarBackgroundView = UIView(frame: frame)
        navigationBarBackgroundView?.translatesAutoresizingMaskIntoConstraints = true
        navigationBarBackgroundView?.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]

        navigationBarBackgroundView?.isUserInteractionEnabled = false

        view.insertSubview(navigationBarBackgroundView!, aboveSubview: navigationBar)
    }
}

यह मूल रूप से नेविगेशन बार पृष्ठभूमि पारदर्शी बनाता है और पृष्ठभूमि के रूप में एक और UIView का उपयोग करता है। स्टेटस बार के साथ नेविगेशन बार पृष्ठभूमि रंग को सेट करने के लिए आप अपने नेविगेशन नियंत्रक की setNavigationBarBackground विधि को कॉल कर सकते हैं।

ध्यान रखें कि जब आप नेविगेशन बार को छिपाना चाहते हैं तो एक्सटेंशन में setNavigationBar(hidden: Bool, animated: Bool) विधि का उपयोग करना होगा अन्यथा पृष्ठभूमि के रूप में उपयोग किए जाने वाले दृश्य को अभी भी दिखाई देगा।


यहां कुल, कॉपी और पेस्ट समाधान है, एक के साथ

बिल्कुल सही स्पष्टीकरण

शामिल हर मुद्दे का।

वारिफ अखण्ड ऋषि के धन्यवाद!

keyPath स्थिति के बारे में अद्भुत खोज के लिए BarWindow.statusBar। अच्छा था।

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    // handle the iOS bar!

    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // "Status Bar Style" refers to the >>>>>color of the TEXT<<<<<< of the Apple status bar,
    // it does NOT refer to the background color of the bar. This causes a lot of confusion.
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<
    // >>>>>NOTE<<<<<

    // our app is white, so we want the Apple bar to be white (with, obviously, black writing)

    // make the ultimate window of OUR app actually start only BELOW Apple's bar....
    // so, in storyboard, never think about the issue. design to the full height in storyboard.
    let h = UIApplication.shared.statusBarFrame.size.height
    let f = self.window?.frame
    self.window?.frame = CGRect(x: 0, y: h, width: f!.size.width, height: f!.size.height - h)

    // next, in your plist be sure to have this: you almost always want this anyway:
    // <key>UIViewControllerBasedStatusBarAppearance</key>
    // <false/>

    // next - very simply in the app Target, select "Status Bar Style" to Default.
    // Do nothing in the plist regarding "Status Bar Style" - in modern Xcode, setting
    // the "Status Bar Style" toggle simply sets the plist for you.

    // finally, method A:
    // set the bg of the Apple bar to white.  Technique courtesy Warif Akhand Rishi.
    // note: self.window?.clipsToBounds = true-or-false, makes no difference in method A.
    if let sb = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView {
        sb.backgroundColor = UIColor.white
        // if you prefer a light gray under there...
        //sb.backgroundColor = UIColor(hue: 0, saturation: 0, brightness: 0.9, alpha: 1)
    }

    /*
    // if you prefer or if necessary, method B:
    // explicitly actually add a background, in our app, to sit behind the apple bar....
    self.window?.clipsToBounds = false // MUST be false if you use this approach
    let whiteness = UIView()
    whiteness.frame = CGRect(x: 0, y: -h, width: f!.size.width, height: h)
    whiteness.backgroundColor = UIColor.green
    self.window!.addSubview(whiteness)
    */

    return true
}

स्टेटस बार का पृष्ठभूमि रंग बदलें: स्विफ्ट:

let proxyViewForStatusBar : UIView = UIView(frame: CGRectMake(0, 0,self.view.frame.size.width, 20))    
        proxyViewForStatusBar.backgroundColor=UIColor.whiteColor()
        self.view.addSubview(proxyViewForStatusBar)

मुझे अन्य तरीकों की तलाश करनी पड़ी। जिसमें विंडो पर addSubview शामिल नहीं है। क्योंकि जब कीबोर्ड प्रस्तुत किया जाता है तो मैं विंडो को ऊपर ले जा रहा हूं।

उद्देश्य सी

- (void)setStatusBarBackgroundColor:(UIColor *)color {

    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
        statusBar.backgroundColor = color;
    }
}

तीव्र

func setStatusBarBackgroundColor(color: UIColor) {

    guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
        return
    }

    statusBar.backgroundColor = color
}

स्विफ्ट 3

func setStatusBarBackgroundColor(color: UIColor) {

    guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }

    statusBar.backgroundColor = color
}

इस फॉर्म को कॉल करना application:didFinishLaunchingWithOptions ने मेरे लिए काम किया।

एनबी हमारे पास इस तर्क के साथ ऐप स्टोर में एक ऐप है। तो मुझे लगता है कि ऐप स्टोर नीति के साथ ठीक है।

संपादित करें:

अपने जोखिम पार इस्तेमाल करें। टिप्पणीकार @ सेबेडडड बनाएं

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





ios-statusbar