首页 > 代码库 > 导航控制器
导航控制器
设置导航栏的按钮并不是去设置导航栏本身,而是设置当时被导航的视图控制器,当前控制器只能设置title,titleView,backBarButtonItem(不能设置导航条颜色,使用当前控制器不能设置整个导航条(不能直接设置导航条整体)的属性,比如整体颜色,整体背景图等,那是给navigationBar管理的),因为每个控制器上面的导航条要显示什么(,比如title,,,)只有自己知道,所以每个viewController都有@property(nonatomic,readonly,retain) UINavigationItem *navigationItem;这个属性,用来定义其导航栏的外观,navigationItem里包含leftbarbuttonItem,rightbarbuttonItem,可以设置左右按钮视图。(navigationItem只能设置局部)
设置导航条颜色:
self. navigationController.navigationBar.tintColor = [UIColor blackColor];
---------------------------------------------------------------------------------------
UIbarbuttonItem:
因为navigationItem有个titleView属性,所以title可以是个view,那么在storyboard界面拉一个按钮上去,系统不会帮你包装成UIbarbuttonItem类型,因为titleView它是个view,而UIbarbuttonItem(继承自UIbarItem)是一个UIbarItem(直接继承自NSObject,不属于UIView).
当你在storyboard界面拉一个button不放在titile位置,而放在导航条的左右视图时,系统会帮你包装成UIbarbuttonItem(在storyboard你可以看到UIbarbuttonItem里包装一个button,如图所示:)
类型,这个时候如果设置此button的title,字体默认是白色,如果你直接拉一个UIbarbuttonItem放在导航条的左右视图时,你只能看到UIbarbuttonItem,不能看到UIbutton,如图所示:并且按钮上的字体颜色默认是蓝色
当UIbarbuttonItem包装一个button时,这时不能直接删掉button(在storyboard中根本删不掉),如想删掉button,只要删掉barbuttonItem即可!!!
设置导航条title字体颜色:
NSMutableDictionary *md = [NSMutableDictionary dictionary]; md[NSFontAttributeName] = [UIFont systemFontOfSize:16]; md[NSForegroundColorAttributeName] = [UIColor whiteColor]; [navBar setTitleTextAttributes:md];
因为navigationItem的title属性是NSString类型,所以不能设置颜色,但是如果给title一个view,然后在view中加一个label设置字体和颜色(因为navigationItem有个titleView属性,这样设置应该也可以,本人没有设置过,这样设置太麻烦),所以直接给navigationBar管理