好久没写东西了,太懒又没时间。
其实最近还是遇到了很多问题,都解决了。今天有时间来小小的总结一下。都不知道怎么描述这个问题,那就不多说了直接上图
之前拿到UI的设计图,要完成图2的效果,不知道大家注意到图1和图2的区别没有,我反正做的时候没注意过,做成图1的效果了,后来才发现,然后用了愚蠢的方式隐藏了导航栏,然后强行自定义了导航,因为隐藏导航后,只有self.view 就不会考虑导航栏上面透明的一层。后来发现有这样一个方法:
nav.navigationBar.translucent = NO;
设置导航栏没有半透明效果。一句话可以解决的事情我写了一堆。。
这个方法的效果是什么,就是图3和4的区别,应该看得懂。一个NO,一个YES;我也不知道大家看得懂我的意思不,直接分享一个自己封装好的导航吧,适合自己用就拿去
+ (UINavigationController *)setNavigation {
UINavigationController *nav = [[UINavigationController alloc]init];
//设置导航栏颜色
[nav.navigationBar setBarTintColor:[UIColor colorWithRed:96 / 255.0 green:128 / 255.0 blue:153 / 255.0 alpha:1]];
//导航栏没有半透明效果
nav.navigationBar.translucent = NO;
//设置导航栏标题颜色
[nav.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:17],NSForegroundColorAttributeName:[UIColor whiteColor]}];
[nav.navigationBar setTintColor:[UIColor whiteColor]];
//隐藏导航栏下面的线条
[nav.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
nav.navigationBar.shadowImage = [[UIImage alloc] init];
return nav;
}
+ (UIBarButtonItem *)createBarButtonItemWithTitle:(NSString *)title imageName:(NSString *)imgName highlightedImageName:(NSString *)hlImgName target:(id)target selector:(SEL)sel font:(CGFloat)fontSize
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
CGSize size = [UIImage imageNamed:imgName].size;
btn.frame = CGRectMake(0, 0, size.width, size.height);
[btn setTitle:title forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:imgName] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:hlImgName] forState:UIControlStateHighlighted];
btn.titleLabel.font = [UIFont systemFontOfSize:fontSize];
[btn addTarget:target action:sel forControlEvents:UIControlEventTouchUpInside];
return [[UIBarButtonItem alloc] initWithCustomView:btn];
}