navigaitonBar的自定义设置

navigaitonBar的自定义设置

navigationBar介绍:

navigationbar就是一个导航视图控制器上面的导航栏。

如何设置这个navigationbar?

首先我们来探讨如何来获取navigationbar?

我们可以使用下面两个方法来获取我们当前页面的navigationbar

	self.navigationController.navigationBar
[UINavigationBar appearance]

获得了这个navigationbar之后,我们可以在这个属性上面进行自定义设置:

设置bar背景颜色方法:

[self.navigationBar setBackgroundColor:[UIColor redColor]];

navigaitonBar的自定义设置

设置bar的颜色:

[self.navigationBar setBarTintColor:[UIColor redColor]];

navigaitonBar的自定义设置

设置bar背景图片方法:

[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"Ellipse 4"] forBarMetrics:UIBarMetricsDefault];

navigaitonBar的自定义设置

要设置navigationBar的title的属性的时候,我们可以使用setTitleTextAttributes方法来设置。

    UIColor *color = [UIColor yellowColor];
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowColor:[UIColor blueColor]];
[shadow setShadowOffset:CGSizeMake(1, 1)];
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:22]; [self.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:color,NSForegroundColorAttributeName, shadow, NSShadowAttributeName, font, NSFontAttributeName , nil]];

navigaitonBar的自定义设置

在这个方法中,我们首先title的属性用NSDictionary的value和key表示出来。然后在这个方法中提取出这些属性,设置到这个titleText中去。这里我们需要注意一下,就是这个方法是覆盖设置的,就是说我们先设置了一个字体,然后我们在后来又用这个方法来设置阴影,那么这个字体设置就没有效果了的。

下面是我们的属性的名,我们方便我们在编写的时候可以查看,便于属性的设置:

NSForegroundColorAttributeName//设置字体颜色
NSShadowAttributeName//设置阴影
NSFontAttributeName//设置字体

上面方法中的shadow设置的介绍:

    NSShadow *shadow = [[NSShadow alloc] init];
// 设置阴影的颜色
[shadow setShadowColor:[UIColor blueColor]];
// 设置阴影的位置,就是阴影偏移原来位置的坐标
[shadow setShadowOffset:CGSizeMake(1, 1)];

如何设置VavigationBar上的按钮:

下面是在NavigationBar中设置一个按钮的方法,这里需要注意下设置button的方法不能在navigatonController中的rootViewCotroller中有效。

设置代码的方法为:

UIBarButtonItem *buttonItem3 = [[UIBarButtonItem alloc] init];
[buttonItem3 setTitle:@"back1"];
[buttonItem3 setTarget:self];
[buttonItem3 setAction:@selector(backButtonAction)];
self.navigationItem.leftBarButtonItem = buttonItem3;

navigaitonBar的自定义设置

这个左边的按钮是我们刚刚创建的。

我们也可以用代码创建好几个button:

UIBarButtonItem *buttonItem2 = [[UIBarButtonItem alloc] init];
[buttonItem2 setTitle:@"back"];
[buttonItem2 setTarget:self];
[buttonItem2 setAction:@selector(rightBarButton2)]; UIBarButtonItem *buttonItem1 = [[UIBarButtonItem alloc] init];
[buttonItem1 setTitle:@"left1"];
[buttonItem1 setWidth:10];
[buttonItem1 setImage:[UIImage imageNamed:@"Ellipse 4"]];
[buttonItem1 setTarget:self];
[buttonItem1 setAction:@selector(rightBarButton1)];
self.navigationItem.rightBarButtonItems = @[buttonItem1, buttonItem2];

navigaitonBar的自定义设置

这个右边的两个button就是我们刚刚创建的。

我们也可以title的位置自定义View,例如下面的代码:

UIButton *buttonItem5 = [[UIButton alloc] initWithFrame:CGRectMake(120, 20, 40, 40)];
[buttonItem5 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[buttonItem5 setTitle:@"test" forState:UIControlStateNormal];
[buttonItem5 addTarget:self action:@selector(titleViewButton) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.titleView = buttonItem5;

navigaitonBar的自定义设置

看看这个代码的本质,self.navigationItem.titleView其实是系统给我提供的一个UIView的类型的属性,因此我们可以设置一个UIVIew类型(或者其子类)的实例,设置好将其添加到self.navigationItem.titleView的属性里面,因此看来这个属性的自定义的*度是非常大的。例如刚刚的代码:我们在代码中设置的UIButton的就是一个UIView的子类。因此,我们可以使用这个button来设置这个属性。




上一篇:Android开发自学笔记(Android Studio) 目录


下一篇:ionic 微信分享值各种坑