繁体   English   中英

设置工具栏颜色和导航栏后退按钮

[英]Set toolbar color and navigationbar back button

我想在iOS7中设置工具栏的背景色:我通过以下方式设置颜色:

toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,40)];
[toolBar setBarStyle:UIBarStyleBlack];
toolBar.items = [[NSArray alloc] initWithObjects:barButtonDone,flexible,barButtonOther,nil];
toolBar.tintColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"dropdownbar"]];

但是没有显示背景图像。

在此处输入图片说明

我想知道这是做什么的:

 NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];
    self.navigationController.navigationBar.translucent = NO;
} else {
    self.navigationController.navigationBar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];

}

Nd如何更改默认导航栏的后退按钮颜色:

在此处输入图片说明

在此处输入图片说明

在iOS中,你必须使用7 toolbar.barTintColor设置彩色, toolbar.tintColor将设置工具栏里面的barButtons的颜色。

最后一段代码测试该应用程序是否在iOS 7上运行,如果使用的是barTintColor ,否则,将使用tintColor

要更改backButton,您可以通过设置navigationBar的tintColor来执行相同操作

此代码基本上是确定iOS是什么,并选择正确的方法调用来设置navigationBar的tintColor 查看下面代码中的注释

/* This is basically getting the systemVersion of the device so 7.0.1 - as this is returned
   as an NSString the user is separating this string based on the string "." which will
   place each string into the array. so you will have 3 objects in this array of "7", "0", "1"
 */
NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
/* Once we have separated this string into the array we are getting the first object in that array
   so index `0` which will return a string at which point we are converting the string "7" to
   an intValue and comparing it to the int 7. So if that value is 7 or greater return TRUE
 */
if ([[ver objectAtIndex:0] intValue] >= 7) {
    /* The value was TRUE so lets use the iOS 7 way of setting the tintColor.
       We do this by setting barTintColor for the navigationBar and because
       in iOS 7 the navigationBar can be translucent - by default this is YES
       but because we are setting to a color we want we need to set this to NO
       because we don't want to have it translucent.
     */
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];
    self.navigationController.navigationBar.translucent = NO;
} else {
    /* 
     If all fails in the if statements conditional check we must be on something 
     that is below iOS 7 so use the old way of things and just set the tintColor
     */
    self.navigationController.navigationBar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];
}

请注意,这是行不通的。 如果要使用此更改,请更改为:

if (floor(NSFoundationVersionNumber) => NSFoundationVersionNumber_iOS_7_0) {
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];
    self.navigationController.navigationBar.translucent = NO;
} else {
    self.navigationController.navigationBar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];
}

这是因为if ([[ver objectAtIndex:0] intValue] >= 7) iOS 7 if ([[ver objectAtIndex:0] intValue] >= 7)也会返回FALSE。

要设置工具栏,您可以使用相同的方法,但替换为:

self.navigationController.navigationBar.barTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];
self.navigationController.navigationBar.translucent = NO;

[toolbar setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"dropdownbar"]]];
[toolbar setTranslucent:NO];

并更换

 self.navigationController.navigationBar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top_bar"]];

 [toolbar setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"dropdownbar"]]];
//How to set color of  *all* navigationbars and toolbars in an app in Swift 2.0

    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {

      func application(application: UIApplication, didFinishLaunchingWithOptionslaunchOptions: [NSObject: AnyObject]?) -> Bool {
         UINavigationBar.appearance().tintColor = UIColor.greenColor(); // All back button in the app are now green.
         UIToolbar.appearance().tintColor = UIColor.orangeColor(); // All toolBar icons in the app are now orange.

        //........
        let returnCode: Bool = getAppSpecificReturnCode();



       return returnCode
    }


    }

您可以使用以下代码...

[toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM