您的位置:首页 > 移动开发 > IOS开发

iOS 导航栏相关问题 导航!!!!!!!!!!!!!!!

2016-09-19 18:23 204 查看
1. 导航栏添加搜索框   

 CGRect mainViewBounds =self.navigationController.view.bounds;

    UISearchBar *customSearchBar = [[UISearchBaralloc]initWithFrame:CGRectMake(CGRectGetWidth(mainViewBounds)/2-((CGRectGetWidth(mainViewBounds)-120)/2),CGRectGetMinY(mainViewBounds)+22,CGRectGetWidth(mainViewBounds)-80,40)];

    customSearchBar.delegate =self;

    customSearchBar.showsCancelButton =NO;

    customSearchBar.searchBarStyle =UISearchBarStyleMinimal;

    // 整个背景颜色

//    customSearchBar.backgroundColor = [UIColor whiteColor];

    // 光标颜色

//    customSearchBar.tintColor = [UIColor whiteColor];

    [self.navigationController.viewaddSubview:
customSearchBar];
2. 导航栏放置多个按钮

UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc]initWithTitle:@"first" style:UITabBarSystemItemContactstarget:self action:@selector(one:)];

    UIBarButtonItem *anotherButton2 = [[UIBarButtonItem alloc]initWithTitle:@"second" style:UITabBarSystemItemContactstarget:self action:@selector(two:)];

    [self.navigationItem setLeftBarButtonItems:[NSArrayarrayWithObjects:
anotherButton,anotherButton2,nil]];

3. 自定义导航按钮和标题

    UIButton * leftBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    leftBtn.frame =CGRectMake(0,0,83,40);

    //    leftBtn.backgroundColor = [UIColor greenColor];

    [leftBtn setTintColor:[UIColor whiteColor]];

    [leftBtn setImageEdgeInsets:UIEdgeInsetsMake(0,
-50,
0, 0)];

    [leftBtn setImage:[UIImage imageNamed:@"goback_normal"]forState:UIControlStateNormal];

    [leftBtn addTarget:self action:@selector(goback)forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem * leftItem = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];

    self.navigationItem.leftBarButtonItem = leftItem;

    左右区别:

    self.navigationItem.rightBarButtonItem =
rightItem;
    标题:

    UIView * centerView = [[UIViewalloc]initWithFrame:CGRectMake(0,7,110,30)];

    UILabel *titleLabel = [[UILabelalloc]initWithFrame:CGRectMake(0,0,110,30)];

    titleLabel.text =@"选择所在桌位";

    titleLabel.textColor = [UIColorwhiteColor];

    [centerView addSubview:titleLabel];

    self.navigationItem.titleView = centerView;
4.  自定义导航栏背景颜色

    [self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"topbar"]forBarMetrics:UIBarMetricsDefault];
5.  隐藏系统导航栏

    self.navigationController.navigationBarHidden
= NO;
6. 让新的view覆盖导航栏
[[UIApplication sharedApplication].keyWindow addSubview:yourView];


7.系统的返回箭头一般是这样的:先去掉返回标题。

[objc] view
plain copy

UIBarButtonItem *back = [[UIBarButtonItem alloc] init];  

back.title = @"";  

self.navigationItem.backBarButtonItem = back;  



然后,替换:

[objc] view
plain copy

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"icon-erji"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  

结果:



接着,设置一下图片:

[objc] view
plain copy

UIImage *backImage = [[UIImage imageNamed:@"icon-erji"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 25, 0, 0)];  

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  

结果:



好了!

发现,点击红框右下角的地方都能返回。



8.iOS 设置导航透明的两种方法

方法一

在当前页面加入下面方法

- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

    //去掉导航栏底部的黑线

    self.navigationController.navigationBar.shadowImage = [UIImage new];

}
如果仅设置当前页导航透明,需加入下面方法

- (void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];

    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

    [self.navigationController.navigationBar setShadowImage:nil];

}

需要注意的是:如果返回上一页的操作有动画,则在上一页出现的时候,导航栏的颜色会逐渐变化

方法二

- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    [[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;

}

仅设置当前页面

- (void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];

    [[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 1;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: