• navigaitonBar的自定义设置


    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来设置这个属性。













  • 相关阅读:
    (基础) --- KMP字符串
    (基础)--- 前缀和、差分
    PHOTOSHOP --- 分辨率、图片保存格式
    Oracle Delete数据后手动释放空间
    掌握爬虫技术需要学哪些内容?
    如何用python制作动态二维码,来哄女朋友开心?
    python为什么会环境变量设置不成功
    python和js交互调用的方法
    基于PHP实现解密或加密Cloudflar邮箱保护
    基于pytorch中的Sequential用法说明
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026947.html
Copyright © 2020-2023  润新知