定制导航栏

转载 2015年11月21日 16:42:26

想定制导航栏吗?从iOS5开始你就可以改变导航栏的背景图片、tintcolor或者标题文本。

这里我们将介绍如何在Xcode中定制导航栏。

 

从这里你可以下载到本文用到的按钮: Buttons.zip

首先需要获取UINavigationController引用。你可以在创建UINavigationController时定制导航栏,也可以在ViewController加载到UINavigationController时定制导航栏。

打开要引用UINavigationController的类,在viewDidLoad方法中定制导航栏的背景图片,如下列代码所示:

 

UIImage *navbarPortrait= [[UIImageimageNamed:@"navbar_44.png"]                               

 resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];     

UIImage *navbarLandscape =[[UIImage imageNamed:@"navbar_32.png"]                                

resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];      

// Setbackgroundimage for all navigationcontrollers     

[[UINavigationBar appearance] setBackgroundImage:navbarPortrait                                        

forBarMetrics:UIBarMetricsDefault];    

[[UINavigationBarappearance] setBackgroundImage:navbarLandscape                                       

 forBarMetrics:UIBarMetricsLandscapePhone];

 

 

导航栏的背景图片必须是下列高度:

竖屏:44px(retina 屏则为 88px)
横屏:32px (retina 屏则为 64px)

 

BarButton(包括backButton)的背景图片用backgroundimage属性设置。BarButton的背景图片必须是下列高度:

竖屏:30px(retina 屏则为 60px)
横屏:24px(retina 屏则为 48px)

 

如果标题文本过长(超过按钮图片的宽度)图片将被缩放。

   

// Setbackgroundimage for all buttons    

UIImage *buttonPortait= [[UIImageimageNamed:@"button_30.png"]                               

resizableImageWithCapInsets:UIEdgeInsetsMake(0505)];     

UIImage *buttonLandscape =[[UIImage imageNamed:@"button_24.png"]                                 

resizableImageWithCapInsets:UIEdgeInsetsMake(0505)];     

[[UIBarButtonItem appearance] setBackgroundImage:buttonPortait                                             

forState:UIControlStateNormal                                            

barMetrics:UIBarMetricsDefault];    

[[UIBarButtonItemappearance] setBackgroundImage:buttonLandscape                                             

forState:UIControlStateNormal                                           

barMetrics:UIBarMetricsLandscapePhone];    

// Setbackgroundimage for all backbuttons    

UIImage *backButtonPortait= [[UIImageimageNamed:@"back_button_30.png"]                                  

 resizableImageWithCapInsets:UIEdgeInsetsMake(01305)];     

UIImage *backButtonLandscape =[[UIImage imageNamed:@"back_button_24.png"]                                    

 resizableImageWithCapInsets:UIEdgeInsetsMake(01004)];    

[[UIBarButtonItem appearance]setBackButtonBackgroundImage:backButtonPortait                                                      

 forState:UIControlStateNormal                                                     

barMetrics:UIBarMetricsDefault];    

[[UIBarButtonItemappearance]setBackButtonBackgroundImage:backButtonLandscape                                                      

forState:UIControlStateNormal                                                     

barMetrics:UIBarMetricsLandscapePhone];

 

还可以通过titleTextAttriutes属性定制UIBarButton。setTitleTextAttributes:方法用一个NSDictionary参数指定所需选项:

UITextAttributeTextColor,定制文字颜色。

UITextAttributeTextShadowColor,定制文字的阴影色。

UITextAttributeTextShadowOffset,定制阴影的偏移位置。

UITextAttributeFont,定制文本字体。

 

// Settitletext attributes    

NSMutableDictionary *attributes= [[NSMutableDictionary alloc] init];

    

[attributessetValue:[UIColor blackColor] forKey:UITextAttributeTextColor];    

[attributessetValue:[UIColor whiteColor] forKey:UITextAttributeTextShadowColor];    

[attributessetValue:[NSValue valueWithUIOffset:UIOffsetMake(01)]forKey:UITextAttributeTextShadowOffset];    

[attributessetValue:[UIFont fontWithName:@"Verdana"size:0.0] forKey:UITextAttributeFont];      

[[UIBarButtonItemappearance] setTitleTextAttributes:attributes forState:UIControlStateNormal];    

[attributesrelease];

相关文章推荐

【iOS7】定制iOS 7中的导航栏和状态栏

今天因为iOS7兼容性问题特此查阅,关于UINavigationBar的半透明问题,原先的  "不再使用tintColor属性来设置导航栏的颜色,而是使用barTintColor属性来修改背...

定制iOS 7中的导航栏和状态栏

,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7。最新的iOS 7外观上有大量的改动。从开发者的角度来看,导航栏和状态栏就发生了明显的变化。状态栏现在是半透明的了,这也 “” ...

iOS 7 教程:定制iOS 7中的导航栏和状态栏

iOS 7 教程:定制iOS 7中的导航栏和状态栏 注:本文译自Customizing Navigation Bar and Status Bar in iOS 7 近期,...

定制iOS 7中的导航栏和状态栏

近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7。最新的iOS 7外观上有大量的改动。从开发者的角度来看,导航栏和状态栏就发生了明显的变化。状态栏现在是半透明的了,这也就意味着导航栏...

定制iOS 7中的导航栏和状态栏

近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7。最新的iOS 7外观上有大量的改动。从开发者的角度来看,导航栏和状态栏就发生了明显的变化。状态栏现在是半透明的了,这也就意味着导航栏...

iOS 7 教程:定制iOS 7中的导航栏和状态栏

iOS 7 教程:定制iOS 7中的导航栏和状态栏 注:本文译自Customizing Navigation Bar and Status Bar in iOS 7 近期,...

(转)定制iOS 7中的导航栏和状态栏

近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7。最新的iOS 7外观上有大量的改动。从开发者的角度来看,导航栏和状态栏就发生了明显的变化。状态栏现在是半透明的了,这也就意味着导航栏...

定制导航栏的返回按钮

导航栏自带一个返回按钮,我们需要定制它的样式,这可以有许多办法。比如 Hack 导航栏的视图层次。如果你不想 Hack 导航栏,那么你可以使用NavigationBarDelegate。问题在于,如果...

iOS 7 教程:定制iOS 7中的导航栏和状态栏

破船之家 宠辱不惊,闲看庭前花开花落 去留无意,漫随天外云卷云舒 不妄取,不妄予,不妄想,不妄求 与人方便,随遇而安 首页 所有文章 关于我 欢迎关注我的微信公众账号 ...

定制iOS 7中的导航栏和状态栏

分类: 笔记 目录(?)[+] 注:本文译自Customizing Navigation Bar and Status Bar in iOS 7 近期,跟大多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)