navigaitonBar的自定义设置
navigationBar介绍:
navigationbar就是一个导航视图控制器上面的导航栏。
如何设置这个navigationbar?
首先我们来探讨如何来获取navigationbar?
我们可以使用下面两个方法来获取我们当前页面的navigationbar
self.navigationController.navigationBar [UINavigationBar appearance]
获得了这个navigationbar之后,我们可以在这个属性上面进行自定义设置:
设置bar背景颜色方法:
[self.navigationBar setBackgroundColor:[UIColor redColor]];
设置bar的颜色:
[self.navigationBar setBarTintColor:[UIColor redColor]];
设置bar背景图片方法:
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"Ellipse 4"] forBarMetrics:UIBarMetricsDefault];
要设置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]];
在这个方法中,我们首先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;
这个左边的按钮是我们刚刚创建的。
我们也可以用代码创建好几个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];
这个右边的两个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;
看看这个代码的本质,self.navigationItem.titleView其实是系统给我提供的一个UIView的类型的属性,因此我们可以设置一个UIVIew类型(或者其子类)的实例,设置好将其添加到self.navigationItem.titleView的属性里面,因此看来这个属性的自定义的自由度是非常大的。例如刚刚的代码:我们在代码中设置的UIButton的就是一个UIView的子类。因此,我们可以使用这个button来设置这个属性。
时间: 2024-10-11 23:26:56