ios设置导航栏背景图片、返回按钮背景、标题颜色等等
来源:互联网 发布:金华市淘宝邮编 编辑:程序博客网 时间:2024/04/29 16:43
在ios程序的编写过程中,很多时候我们都要自定义自己的UI,而不是使用cocoatouch中原有的。说起对UI的更改,很多时候我们只是修改一下原有UI的背景啊,颜色之类的,以达到新的要求。
在此之前呢,设置UINavigationController的背景颜色,我会使用如下的代码:
首先看.h文件
后从这个基础类继承过来,这也可以,但是不是最简便的方式。
好了,说了这么多,我们来看看我最近看到的一个比较方便的方法吧:
在此之前呢,设置UINavigationController的背景颜色,我会使用如下的代码:
首先看.h文件
#import <UIKit/UIKit.h>@interface UINavigationBar (CustomBar)- (void)customNavigationBar;@end.m文件
#import "UINavigationBar+CustomBar.h"#import <QuartzCore/QuartzCore.h>@implementation UINavigationBar (CustomBar)- (void)customNavigationBar{ if ([self respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { CGSize titleSize = self.bounds.size; //获取Navigation Bar的位置和大小 UIImage *image = [UIImage imageNamed:@"img_nav_backimg"]; UIGraphicsBeginImageContext(titleSize); [image drawInRect:CGRectMake(0, 0, titleSize.width, titleSize.height)]; UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [self setBackgroundImage:scaledImage forBarMetrics:UIBarMetricsDefault]; } else { [self drawRect:self.bounds]; } // [self drawRoundCornerAndShadow];}- (void)drawRect:(CGRect)rect { [[UIImage imageNamed:@"img_nav_backimg.png"] drawInRect:rect];}- (void)drawRoundCornerAndShadow { CGRect bounds = self.bounds; bounds.size.height +=10; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(10.0, 10.0)]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = bounds; maskLayer.path = maskPath.CGPath; [self.layer addSublayer:maskLayer]; self.layer.mask = maskLayer; self.layer.shadowOffset = CGSizeMake(3, 3); self.layer.shadowOpacity = 0.7; self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;}@end调用时如下:
//设置导航栏底图+ (void)setNavigationCtrollerBackImg:(UINavigationController *)naviCtl{ [naviCtl.navigationBar customNavigationBar];}这样的写法是一个不错的选择。如果说要修改 self.title的颜色呢,相信很多人都会想到自定义UILabel,然后self.navigationControl.titleView = Label,这针对几个页面也许是一个比较不错的选择,可是如果很多页面,甚至所有的页面都需要呢,你或许会说设置一个基础类,然
后从这个基础类继承过来,这也可以,但是不是最简便的方式。
好了,说了这么多,我们来看看我最近看到的一个比较方便的方法吧:
这个方法极大的减轻了自定义带来的代码开销,用在换肤方面可能会更好的体现。是不是很不错啊!#pragma mark 初始化导航栏主题- (void)setNavTheme{ // 1.设置导航栏背景 UINavigationBar *bar = [UINavigationBar appearance]; [bar setBackgroundImage:[UIImage resizeImage:@"NavigationBar_Background.png"] forBarMetrics:UIBarMetricsDefault]; // 状态栏 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque; // 2.设置导航栏文字属性 NSMutableDictionary *barAttrs = [NSMutableDictionary dictionary]; [barAttrs setObject:[UIColor darkGrayColor] forKey:UITextAttributeTextColor]; [barAttrs setObject:[NSValue valueWithUIOffset:UIOffsetMake(0, 0)] forKey:UITextAttributeTextShadowOffset]; [bar setTitleTextAttributes:barAttrs]; // 3.按钮 UIBarButtonItem *item = [UIBarButtonItem appearance]; [item setBackgroundImage:[UIImage resizeImage:@"BarButtonItem_Normal.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [item setBackgroundImage:[UIImage resizeImage:@"BarButtonItem_Pressed.png"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; NSMutableDictionary *itemAttrs = [NSMutableDictionary dictionaryWithDictionary:barAttrs]; [itemAttrs setObject:[UIFont boldSystemFontOfSize:13] forKey:UITextAttributeFont]; [item setTitleTextAttributes:itemAttrs forState:UIControlStateNormal]; [item setTitleTextAttributes:itemAttrs forState:UIControlStateHighlighted]; [item setTitleTextAttributes:itemAttrs forState:UIControlStateDisabled]; // 4.返回按钮 [item setBackButtonBackgroundImage:[UIImage resizeImage:@"BarButtonItem_Back_Normal.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [item setBackButtonBackgroundImage:[UIImage resizeImage:@"BarButtonItem_Back_Pressed.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; //返回按钮的标题 UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] init]; barButtonItem.title = @"buttonName"; self.navigationItem.backBarButtonItem = barButtonItem; [barButtonItem release]}
- ios设置导航栏背景图片、返回按钮背景、标题颜色等等
- ios设置导航栏背景图片、返回按钮背景、标题颜色等等
- navigation导航栏背景,标题和返回按钮文字颜色
- 自定义iOS导航栏背景,标题和返回按钮文字颜色
- iOS 7+自定义导航栏背景,标题和返回按钮文字颜色
- ios之自定义导航栏背景,标题和返回按钮文字颜色
- ios设置导航栏的背景颜色或背景图片
- iOS 8 设置导航栏的背景颜色和背景图片
- iOS开发~设置导航条颜色,导航条标题颜色、字体大小以及导航条返回按钮及其他Item颜色
- iOS 导航条 知识简析(返回按钮,标题,背景颜色 等)
- 设置状态栏、导航栏背景颜色,修改导航栏返回按钮颜色
- 设置状态栏、导航栏背景颜色,修改导航栏返回按钮颜色
- iOS 设置导航栏返回按钮中箭头的颜色
- iOS 设置导航栏返回按钮中箭头的颜色
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- CFileFind中FindFile与API的FindFirstFile区别(CSDN问题)
- chapter 10 关联容器(待续)
- Linux C语言调用C++动态链接库
- 有关Hadoop的六大误解
- 开源软件选型手册
- ios设置导航栏背景图片、返回按钮背景、标题颜色等等
- vs2010中使用curl 配置
- JSON总结
- 汉字转换拼音
- VS2010快捷键
- java synchronized详解
- 数学魔术人人皆会变
- CFileFind中FindFile与API中FindFirstFile的区别
- HDOJ 3987 - Harry Potter and the Forbidden Forest 设置偏移量,最小割