零碎知识点iOS DeveloperiOS

iOS开发-自定义UINavigationBar样式

2017-04-15  本文已影响2979人  Huangbaoqin

属性修改

// 两个方法都可以(在对应的ViewController中使用)
self.title = @"First";
self.navigationItem.title = @"First";
// 设置Title的字体颜色黄色、字体大小24、lightGray颜色阴影
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowColor:[UIColor lightGrayColor]];
[shadow setShadowOffset:CGSizeMake(1.0, 0.0)];
NSDictionary *titleTextAttDict = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor yellowColor], NSForegroundColorAttributeName, [UIFont systemFontOfSize:24], NSFontAttributeName, shadow, NSShadowAttributeName, nil];
[self.navigationController.navigationBar setTitleTextAttributes:titleTextAttDict];
// 垂直向下10个Pt
[self.navigationController.navigationBar setTitleVerticalPositionAdjustment:10 forBarMetrics:UIBarMetricsDefault];
//修改NavigationBar背景颜色为orangeColor
[self.navigationController.navigationBar setBarTintColor:[UIColor orangeColor]];
//修改NavigationBar的背景图片
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Bar_bg"] forBarMetrics:UIBarMetricsDefault];
// 设置为没有毛玻璃效果,view Controller背景为lightGray
[self.navigationController.navigationBar setTranslucent:NO];
没有毛玻璃效果 有毛玻璃效果
[self.navigationController.navigationBar setTranslucent:YES];
[self.navigationController.navigationBar setBackgroundColor:[UIColor redColor]];
毛玻璃红色,view controller灰色
[self.navigationController.navigationBar setTintColor:[UIColor blackColor]];
默认颜色 修改后的颜色
[self.navigationController.navigationBar setBackIndicatorImage:[UIImage imageNamed:@"back"]];
[self.navigationController.navigationBar setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"back"]];
修改前 修改后
[self.navigationController.navigationBar setClipsToBounds:YES];
修改前 修改后
// 用红色的图片设置阴影分割线,和背景图片一起设置才有效果
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Bar_bg"] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"border"]];
修改前 修改后

UINavigationItem设置

  • UIViewController持有自己的UINavigationItem
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:nil];
self.navigationItem.leftBarButtonItem = leftBarButtonItem;
    
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"更多" style:UIBarButtonItemStylePlain target:self action:nil];
self.navigationItem.rightBarButtonItem = rightBarButtonItem;
    
[self.navigationController.navigationBar setTintColor:[UIColor blackColor]];
UIBarButtonItem *leftBackBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back"] style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *leftCloseBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"close"] style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *leftSpaceBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
leftSpaceBarButtonItem.width = -16;
self.navigationItem.leftBarButtonItems = @[leftSpaceBarButtonItem, leftBackBarButtonItem, leftCloseBarButtonItem];
    
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"share"] style:UIBarButtonItemStylePlain target:self action:nil];
self.navigationItem.rightBarButtonItem = rightBarButtonItem;
    
UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 30)];
[titleView setBackgroundColor:[UIColor blackColor]];
self.navigationItem.titleView = titleView;

位置根据具体情况进行调整

上一篇下一篇

猜你喜欢

热点阅读