আইওএস 7 এ স্ট্যাটাস বারের পটভূমির রঙ এবং পাঠ্যের রঙ কীভাবে পরিবর্তন করবেন?


89

আমার বর্তমান অ্যাপ্লিকেশনটি আইওএস 5 এবং 6 এ চলে।

নেভিগেশন বারটিতে একটি কমলা রঙ রয়েছে এবং স্ট্যাটাস বারটিতে সাদা পাঠ্যের রঙের সাথে একটি কালো পটভূমি রঙ রয়েছে। যাইহোক, আমি যখন আইওএস on তে একই অ্যাপ্লিকেশনটি চালাচ্ছি তখন আমি পর্যবেক্ষণ করি যে নেভিগেশন বারের মতো একই কমলা ব্যাকগ্রাউন্ড রঙ এবং স্ট্যাটাস বারের পাঠ্যের রঙটি কালো transparent

এ কারণে আমি স্ট্যাটাস বার এবং নেভিগেশন বারের মধ্যে পার্থক্য করতে সক্ষম নই।

আইওএস 5 এবং 6 এর মতো দেখতে কালো রঙের পটভূমির রঙ এবং সাদা পাঠ্য রঙের সাথে আমি কীভাবে স্ট্যাটাস বারটি করব? আমি এই প্রোগ্রামটিমে কীভাবে করতে পারি?


আপনি এই লিঙ্কটির সাহায্য পেতে পারেন: stackoverflow.com/questions/18901753/…
উত্তর্খ গোয়েল

উত্তর:


174

সতর্কতা: এটি আইওএস 13 এবং এক্সকোড 11 দিয়ে আর কাজ করে না।

=================================================== =======================

আমাকে অন্যান্য উপায়ে দেখার চেষ্টা করতে হয়েছিল। যা 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আমার পক্ষে কাজ করেছিল।

এনবি আমাদের কাছে এই যুক্তি সহ অ্যাপ স্টোরটিতে একটি অ্যাপ রয়েছে। সুতরাং আমি অনুমান করি অ্যাপ স্টোর নীতিটি এটি ঠিক আছে।


সম্পাদনা করুন:

আপনার নিজের ঝুঁকিতে ব্যবহার করুন। কমেন্টার @ সিজিবিডিডি ফর্ম করুন

আমার একটি অ্যাপ্লিকেশন এর কারণ প্রত্যাখ্যান করেছে, অন্যটিতে ঠিক জরিমানা গৃহীত হয়েছিল। তারা এটিকে ব্যক্তিগত এপিআই ব্যবহার বিবেচনা করে, তাই পর্যালোচনা প্রক্রিয়া চলাকালীন আপনি ভাগ্যের সাপেক্ষে :) - Sebyddd


4
গৃহীত সমাধানের বিপরীতে, আপনি যখন ওরিয়েন্টেশন পরিবর্তন করেন তখন এটি কাজ করে। ধন্যবাদ!
মাইকেল

4
এটি কি ব্যক্তিগত এপিআই ব্যবহার নয়?
ফোরইগার

4
আমার একটি অ্যাপ্লিকেশন এর কারণ প্রত্যাখ্যান করেছে, অন্যটিতে ঠিক জরিমানা গৃহীত হয়েছিল। তারা এটিকে বেসরকারী এপিআই ব্যবহার বিবেচনা করে, তাই পর্যালোচনা প্রক্রিয়া চলাকালীন আপনি ভাগ্যের সাপেক্ষে :)
Sebyddd

4
এই সমাধানটিতে একটি সমস্যা রয়েছে, আপনি যখন হোম বোতামটি ডাবল চাপবেন তখন এই স্থিতি স্থিতি বারের রঙটি অদৃশ্য হয়ে যাবে।
কালহীন

4
আইওএস 13 এ কাজ করছে না। ইউআইএপ্লিকেশনটিতে অ্যাপটিকে স্ট্যাটাসবার বা স্ট্যাটাসবার উইন্ডো বলা হয়: স্ট্যাটাস বার বা স্ট্যাটাস বার উইন্ডো নেই বলে এই কোডটি অবশ্যই পরিবর্তন করা উচিত । পরিবর্তে উইন্ডো দৃশ্যে স্ট্যাটাস বারম্যানেজার অবজেক্টটি ব্যবহার করুন।
এনএসডেভোপার

109

আপনার অ্যাপ এতে যান info.plist

1) সেট View controller-based status bar appearanceকরতে NO
2) সেট Status bar styleকরতে UIStatusBarStyleLightContent

তখন আপনার অ্যাপ প্রতিনিধি এতে যান এবং নিচের কোডটি যেখানে আপনি আপনার উইন্ডোজ এর RootViewController সেট পেস্ট করুন।

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
    view.backgroundColor=[UIColor blackColor];
    [self.window.rootViewController.view addSubview:view];
}

আশা করি এটা সাহায্য করবে.


কেবল উল্লেখ করছি, অ্যাপল ডক্স পরিবর্তে যদি এটি পরীক্ষা করে তবে এটি সুপারিশ করে: যদি (এনএসফাউন্ডেশন ভার্সন নাম্বার <= এনএসফাউন্ডেশন ভার্সন নাম্বার_আইওএস_6_1) ers} অন্য {} চিয়ার্স!
জোয়েল বাল্মার

4
@ বিলেয়ার গোটো তথ্য.প্লেস্ট এবং তারপরে যে কোনও সারি নির্বাচন করুন। আপনি একটি + চিহ্ন দেখতে পাবেন। প্লাস চিহ্নে ক্লিক করুন এবং ড্রপ ডাউন থেকে, আপনার Status bar styleবিকল্পটি দেখা উচিত । এটি নির্বাচন করুন। এবং UIStatusBarStyleLightContentএর মান হিসাবে পেস্ট করুন ।
শহীদ ইকবাল ২ '

4
এটি ঘূর্ণায়নের জন্য অ্যাকাউন্ট করে না
18-28 এ 14

4
ইউআইএস স্ক্রিনের প্রস্থ ব্যবহার করা আরও ভাল:UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 20)];
ক্লিমকাজাকএম

4
ফ্রেমটি সেট করার আরও একটি UIApplication.sharedApplication().statusBarFrame
ডগ

28

আইওএস 7-তে স্থিতি বারের পটভূমি রঙ পরিচালনা করার সময়, 2 টি কেস রয়েছে

কেস 1: নেভিগেশন বার সহ দেখুন

এই ক্ষেত্রে আপনার ভিউডিডলড পদ্ধতিতে নিম্নলিখিত কোডটি ব্যবহার করুন

 UIApplication *app = [UIApplication sharedApplication];
 CGFloat statusBarHeight = app.statusBarFrame.size.height;

 UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
 statusBarView.backgroundColor = [UIColor yellowColor];
 [self.navigationController.navigationBar addSubview:statusBarView];

কেস 2: নেভিগেশন বার ছাড়া দেখুন

এই ক্ষেত্রে আপনার ভিউডিডলড পদ্ধতিতে নিম্নলিখিত কোডটি ব্যবহার করুন

 UIApplication *app = [UIApplication sharedApplication];
 CGFloat statusBarHeight = app.statusBarFrame.size.height;

 UIView *statusBarView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
 statusBarView.backgroundColor  =  [UIColor yellowColor];
 [self.view addSubview:statusBarView];

উত্স লিংক http://code-ios.blogspot.in/2014/08/how-to-change-background-color-of.html


এটি আমার পক্ষে ভাল কাজ করেছে, তবে স্ট্যাটাস বারটি 20pt উচ্চ হতে হবে: [[ইউআইভিউ বরাদ্দ] initWithFrame: সিজিআরেক্টমেক (0, -20, 320, 20)];
লর্ডপ্সলে

27

1) প্লিস্টে ইউআইভিউকন্ট্রোলারবেসড স্ট্যাটাসবার অ্যাপেরেন্সটি ইয়েস-তে সেট করুন

2) ভিউডিডলড এ এ [self setNeedsStatusBarAppearanceUpdate];

3) নিম্নলিখিত পদ্ধতি যুক্ত করুন:

 -(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
 } 

আপডেট: আইওএস -7-স্ট্যাটাস-বার-বিকাশকারীদের-গাইড-
এও পরীক্ষা করে দেখুন


আপনি এটিকে কালো বা সাদাতে পরিবর্তন করতে পারেন
মুরুগানানধাম কে

4
এটির কোনও প্রভাব নেই (ios7, সিমুলেটর)। "পছন্দসই স্ট্যাটাসবার্ট স্টাইল" কখনই শুরু হয় না।
অ্যাডাম

4
আপনি xib ব্যবহার করছেন ?. যদি হ্যাঁ সিমুলেটেড মেট্রিক্সের স্থিতির বারের মানটি পরিবর্তন করে
মুরুগান্ধম কে

4
আহ, আমি বিষয়টি খুঁজে পেয়েছি। অ্যাপলের ইউআইএনএভিগেশন কন্ট্রোলারটি বিজ্ঞপ্তিটি ধরবে - যেমন আপনার উত্তর কেবলমাত্র তখনই দেওয়া হয় যখন ভিউ কন্ট্রোলার শীর্ষ নিয়ন্ত্রণকারী হয়, কোনও ধারক নেই (কোনও ট্যাব-বার নেই, কোনও নভবার ইত্যাদি নেই)।
আদম

4
স্টোরিবোর্ড + নেভিগেশনকন্ট্রোলার ব্যবহার করার সময় বিশেষ ক্ষেত্রে। উপরে # 1 করুন। এরপরে, ইউআইএনএভিগেশন কন্ট্রোলারের জন্য একটি সাবক্লাস তৈরি করুন (এটিকে মাইনাভকন্ট্রোলার বলুন)। স্টোরিবোর্ডে, নেভিগেশনকন্ট্রোলারের ক্লাসটি "মাইনাভকন্ট্রোলার" এ সেট করুন। MyNavController.m এ, উপরে # 2 & # 3 করুন। # 3 এর পদ্ধতিটি এখন আপনার সাবক্লাসে কল করা হবে (পর্যবেক্ষণের জন্য একটি লগ বা ব্রেকপয়েন্ট নির্ধারণ করুন)।
উদ্দেশ্যটিসি

16

আপনি অ্যাপ্লিকেশন আরম্ভের সময় বা আপনার ভিউ কন্ট্রোলারের ভিডডলড চলাকালীন স্থিতি বারের জন্য পটভূমি রঙ সেট করতে পারেন।

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
    }

}



ফলাফল এখানে:

এখানে চিত্র বর্ণনা লিখুন


স্থিতি দণ্ড পরিবর্তন সম্পর্কে অ্যাপল নির্দেশিকা / নির্দেশিকা এখানে । কেবলমাত্র অন্ধকার এবং হালকা (যখন এবং কালো) স্ট্যাটাস বারে অনুমোদিত।

এখানে - স্থিতি দণ্ডের স্টাইলটি কীভাবে পরিবর্তন করবেন:

আপনি যদি স্থিতি দণ্ড শৈলী, অ্যাপ্লিকেশন স্তর সেট UIViewControllerBasedStatusBarAppearanceকরতে চান তবে সেট করুনNO আপনার `.plist 'ফাইলে।

আপনি যদি স্থিতি দণ্ড শৈলীটি সেট করতে চান, তবে নিয়ন্ত্রক স্তরে দেখুন এই পদক্ষেপগুলি অনুসরণ করুন:

  1. সেট UIViewControllerBasedStatusBarAppearanceথেকে YES.plist , ফাইল আপনি শুধুমাত্র UIViewController পর্যায়ে সেট স্ট্যাটাস বার শৈলী করতে হবে।
  2. ভিউডিডলড এড ফাংশন - setNeedsStatusBarAppearanceUpdate

  3. আপনার ভিউ কন্ট্রোলারে পছন্দসই স্ট্যাটাসবারস্টাইলকে ওভাররাইড করুন।

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

আমরা যদি এগুলি ব্যবহার করি তবে অ্যাপটি কি প্রত্যাখাত হবে? স্ট্যাটাস বারভিউ রঙটি কি এর মতো পরিবর্তন করা অনুমোদিত?
অভিমুরলিধরন

@ abhi1992 আপেল এটি গ্রহণ করবে কিনা তা আমি বলতে পারছি না কারণ আমি এই সমাধানটি আমার এন্টারপ্রাইজ অ্যাপ্লিকেশনটিতে প্রয়োগ করেছি, যার অ্যাপ স্টোরে জমা দেওয়ার দরকার নেই। :)
ক্রুনাল

যদি আমি এটি কোনও ট্যাব-ভিত্তিক অ্যাপ্লিকেশনটিতে একটি ভিউকন্ট্রোলারের একটি ভিডডোডে রাখি তবে এটি প্রতিটি ভিউকন্ট্রোলারের জন্য রঙ নির্ধারণ করে, যেখানে আমি কোডটি রেখেছি কেবল এটিই নয় (এটি কি স্বাভাবিক?)

14

আইওএস 7-এ স্ট্যাটাস বারটির ব্যাকগ্রাউন্ড নেই, সুতরাং আপনি যদি এর পিছনে একটি কালো 20px-হাই ভিউ রাখেন তবে আপনি আইওএস 6 এর মতো একই ফলাফল অর্জন করতে পারবেন।

এছাড়াও আপনি এই বিষয়ে আরও তথ্যের জন্য আইওএস 7 ইউআই ট্রানজিশন গাইডটি পড়তে চাইতে পারেন ।


4
গ্যাব্রিয়েল, আপনি কি দয়া করে কোডটি সরবরাহ করতে পারেন কীভাবে এর পিছনে 20px হাই ভিউ রাখা যায়?
ডিজেল

দেজেল, এটাই শাহিদের জবাব।
ফ্যাটি

শুধু "20" ব্যবহার করবেন না! আপনি মানটি সঠিকভাবে পেতে পারেন, নীচে আমার দীর্ঘ উত্তরটি দেখুন।
ফ্যাটি

8

আপনার ভিউডিডলড পদ্ধতিতে এটি লিখুন:

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

এটি আমার এবং অন্যান্য UI ভুল প্রতিষ্ঠানের জন্য স্ট্যাটাস বারের রঙও কিছুটা স্থির করে।


7

এখানে একটি সহ মোট, অনুলিপি এবং পেস্ট সমাধান

একেবারে সঠিক ব্যাখ্যা

জড়িত প্রতিটি ইস্যুতে।

ধন্যবাদ সাথে ওয়ারিফ আখন্দ ishষি !

কীপথ সম্পর্কিত আশ্চর্যজনক সন্ধানের জন্য statusBarWindow.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
}

6

কেবল শহিদের উত্তরে যুক্ত করতে - আপনি এই (আইওএস 7+) ব্যবহার করে ওরিয়েন্টেশন পরিবর্তন বা বিভিন্ন ডিভাইসের জন্য অ্যাকাউন্ট করতে পারেন:

- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...

  //Create the background
  UIView* statusBg = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.window.frame.size.width, 20)];
  statusBg.backgroundColor = [UIColor colorWithWhite:1 alpha:.7];

  //Add the view behind the status bar
  [self.window.rootViewController.view addSubview:statusBg];

  //set the constraints to auto-resize
  statusBg.translatesAutoresizingMaskIntoConstraints = NO;
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:0.0]];
  [statusBg.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[statusBg(==20)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(statusBg)]];
  [statusBg.superview setNeedsUpdateConstraints];
  ...
}

হ্যাঁ এটি পর্দার আকার এবং অরিয়েন্টেশন হ্যান্ডেল করা আরও ভাল। এছাড়াও এই কোড চারপাশের ভালো কিছু যোগ করুন: যদি (NSFoundationVersionNumber> NSFoundationVersionNumber_iOS_6_1)
বেঞ্জামিন Piette

6

পটভূমির জন্য আপনি সহজেই একটি দর্শন যোগ করতে পারেন, যেমন:

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];

যেখানে "নাবার" একটি ইউআইএনএভিগেশন বার হয়।


4
আপনার প্রথম দুটি লাইন সঠিক .. তবে শেষ লাইনটি [নেভিগেশনকন্ট্রোলআরভিউ অ্যাডসুভিউ: দেখুন] হওয়া উচিত; এটি ইউআইএনএভিগেশন কন্ট্রোলারের দৃশ্যে ইউআইএনএভিগেশনবারের ভিউয়ের সাথে যুক্ত করা উচিত কারণ এটি স্ট্যাটাস বারকে ওভারল্যাপিং না করে 20 পিক্সেল স্ট্যাটাস বারের পরে ভিউ যুক্ত করবে।
শহীদ ইকবাল

সুইফটে এটি ব্যবহার করুন: আসুন রেকট = সিজিআরেক্ট (x: 0, y: 0, প্রস্থ: UIScreen.main.bounds.width, উচ্চতা: UIApplication.shared.statusBarFrame.height) বার = ইউআইভিউ (ফ্রেম: রেক্ট) বার.ব্যাকগ্রাউন্ড কালার = ইউআইসিওলর.ভাইট নেভিগেশন কন্ট্রোলার? .ভিউ.এডিডিউইউবিউ (বার)
জেভিএস

5

সুইফট 4:

// স্ট্যাটাস বারের পটভূমির রঙ পরিবর্তন করুন

let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView

statusBar?.backgroundColor = UIColor.red

4

স্থিতি বারের পটভূমির রঙ পরিবর্তন করুন: সুইফট:

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

1

আইওএস 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)

এটি কাজ করে, তবে আমি মনে করি না যে এই স্টাইলটি হ্যান্ডেল করার এটি সর্বোত্তম উপায়
মাইকেল 20

1

iTroid23 সমাধান আমার জন্য কাজ করেছে। আমি সুইফট সমাধানটি মিস করেছি। সুতরাং সম্ভবত এটি সহায়ক:

1) আমার লিস্টে আমাকে এটি যুক্ত করতে হয়েছিল:

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

2) আমাকে "সেটনিডস্ট্যাটাসবারিয়া অ্যাপিয়ারেন্সআপডেট" কল করার দরকার নেই।

3) দ্রুত আমাকে এটিকে আমার ইউআইভিউউকন্ট্রোলারে যুক্ত করতে হয়েছিল:

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


1

আপনি যদি একটি ব্যবহার করেন তবে আপনি 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)
    }
}

এটি মূলত নেভিগেশন বারের পটভূমিটিকে স্বচ্ছ করে তোলে এবং পটভূমি হিসাবে অন্য ইউআইভিউ ব্যবহার করে। আপনি কল করতে পারেনsetNavigationBarBackgroundস্ট্যাটাস বারের সাথে নেভিগেশন বারের পটভূমির রঙ সেট করতে আপনি আপনার নেভিগেশন কন্ট্রোলারের পদ্ধতিকে ।

মনে রাখবেন যে আপনি setNavigationBar(hidden: Bool, animated: Bool)যখন নেভিগেশন বারটি আড়াল করতে চান তখন আপনাকে এক্সটেনশনে পদ্ধতিটি ব্যবহার করতে হবে অন্যথায় পটভূমি হিসাবে ব্যবহৃত দৃশ্যটি এখনও দৃশ্যমান হবে।


এটি আমার পক্ষে সেরা উত্তর ছিল যেহেতু এটি অন্যান্য অনেক উত্তর সমস্যার হ্রাস করেছে। ডাউনসাইডটি হ'ল ফিক্সড ফ্রেম.সাইজ.হাইট = 64 যা ভুল। উচ্চতা পাওয়ার আরও একটি সাম্প্রতিক উপায় হ'ল -> .উইউ.উইনডো? 0.
গোনালো গ্যাস্পার

1

এটা চেষ্টা কর. আপনার প্রশংসাসূচক শ্রেণীর 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];
}

1

নীচের কোড স্নিপেট উদ্দেশ্য সি সঙ্গে কাজ করা উচিত।

   if (@available(iOS 13.0, *)) {
      UIView *statusBar = [[UIView alloc]initWithFrame:[UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame] ;
      statusBar.backgroundColor = [UIColor whiteColor];
      [[UIApplication sharedApplication].keyWindow addSubview:statusBar];
  } else {
      // Fallback on earlier versions

       UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
          if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
              statusBar.backgroundColor = [UIColor whiteColor];//set whatever color you like
      }
  }

আপনি iOS 13. ডাবল স্ট্যাটাস বার পাবেন
kelin

0

বার রঙের জন্য: আপনি বারটির জন্য একটি কাস্টম ব্যাকগ্রাউন্ড চিত্র সরবরাহ করেন।

পাঠ্যের রঙের জন্য: আইওএসে পাঠ্য হ্যান্ডলিং সম্পর্কিত তথ্য ব্যবহার করুন


4
এটি কোনও পাঠ্য রঙ নির্ধারণের বিষয়ে নয়
Johnykutty

আপনি যদি কেবল একটি শক্ত রঙ সেট করতে চান তবে ব্যাকগ্রাউন্ড চিত্র যুক্ত করা একটি ওভারকিল, বিশেষত আপনি যদি উড়তে রঙ পরিবর্তন করতে সক্ষম হতে চান
halil_g

0

আমি AppDelegate.csপদ্ধতিতে ফাইলটিতে স্ট্যাটাসবার রঙটি খুব সহজ সংযোজন করতে সক্ষম হয়েছি :

public override bool FinishedLaunching(UIApplication app, NSDictionary options)

পরবর্তী কোড:

UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;

if (statusBar!=null && statusBar.RespondsToSelector(new Selector("setBackgroundColor:")))
{
   statusBar.BackgroundColor = Color.FromHex(RedColorHex).ToUIColor();
}

সুতরাং আপনি এই জাতীয় কিছু পেতে:

এখানে চিত্র বর্ণনা লিখুন

লিঙ্ক: https://jorgearamirez.wordpress.com/2016/07/18/lesson-x-effects-for-the-status-bar/


এই কি ভাষা?
আহমাদরেজা

4
@ আলফি জামারিন ফর্ম করে এবং ব্যাকগ্রাউন্ডে এর সি #
ড্যান

0

সুইফট 4

ইন Info.plistএই সম্পত্তি যোগ

কন্ট্রোলার-ভিত্তিক স্থিতি দণ্ডের উপস্থিতি দেখুন

এবং পরে যে AppDelegateভিতরে didFinishLaunchingWithOptionsকোডের এই লাইন যোগ

UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = .lightContent

0

সুইফ্ট 5 এবং এক্সকোড 10.2 এ

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(0.1 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: {

//Set status bar background colour
let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
statusBar?.backgroundColor = UIColor.red
//Set navigation bar subView background colour
   for view in controller.navigationController?.navigationBar.subviews ?? [] {
      view.tintColor = UIColor.white
      view.backgroundColor = UIColor.red
   }
})

এখানে আমি স্থিতি বারের পটভূমির রঙ এবং নেভিগেশন বারের পটভূমির রঙ স্থির করেছি। আপনি নেভিগেশন বার না চাইলে রঙটি মন্তব্য করুন।


0

সুইফট কোড

            let statusBarView = UIView(frame: CGRect(x: 0, y: 0, width: view.width, height: 20.0))
            statusBarView.backgroundColor = UIColor.red
            self.navigationController?.view.addSubview(statusBarView)

0

আপনি আইওএস 13 * এবং সুইফট 4 এর জন্য নীচের মতো ব্যবহার করতে পারেন।

1 -> দেখুন নিয়ন্ত্রণকারী-ভিত্তিক স্থিতি দণ্ডের উপস্থিতি কোনওটিতে সেট করুন

extension UIApplication {
var statusBarView: UIView? {
    if #available(iOS 13.0, *) {
       let statusBar =  UIView()

        statusBar.frame = UIApplication.shared.statusBarFrame

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

didFinishLaunchingWithOptions এ ব্যবহার করুন

UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.