IOS Swift3.0自定义导航栏(UINavigation)

从学IOS开始到现在已经半年了,也独立做过两个项目,都是涉及蓝牙方面的通信. 在我开发过程中遇到一些问题,然后寻找到的解决方案分享给大家也是开年的第一篇希望能过帮助大家。在我们开发程序过程中不可能都理所当然的使用IOS系统自带的一些控件,我们往往都需要通过定制才能完成和达到一定效果,下面就和大家分享IOS自定义导航栏和导航栏的高度。
最终的效果图是这样的,大家也可以改变背景, 或者是 right, left , title 使用图片,这里只是告诉大家怎样改变高度
这里写图片描述

第一步:我们的ViewController 需要支持导航栏
需要在 AppDelegate 中 didFinishLaunchingWithOptions方法中做如下实现

let sb=UIStoryboard(name: "Main", bundle: nil)
let vc=sb.instantiateViewController(withIdentifier: "ViewController")
let navigationC=UINavigationController(rootViewController: vc)
self.window?.rootViewController=navigationC

通过以上方法我们跳转的控制器就自定了导航栏

第二步:为了使程序以后扩展或者修改方便我们重新建立一个类,使用extension ,
然后创建一个方法,名字自己随便定义,我使用的是test

func test() {
    //隐藏系统的导航栏 不然点击事件受到影响
    self.navigationController?.isNavigationBarHidden=true
    // 创建一个导航栏
    let navBar = UINavigationBar(frame: CGRect(x:0, y:20, width:self.view.frame.size.width, height:60))
    // 导航栏背景颜色
    navBar.backgroundColor = UIColor.blue
    //这里是导航栏透明
    //navBar.shadowImage = UIImage()
    //navBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)

    // 自定义导航栏的title,用UILabel实现
    let titleLabel = UILabel(frame: CGRect(x:0,y:0,width:50,height:60))
    titleLabel.text = "LOG IN"
    titleLabel.textColor = UIColor.red
    //这里使用系统自定义的字体
    //titleLabel.font = UIFont(name: "Roboto-Medium", size: 16)

    // 创建导航栏组件
    let navItem = UINavigationItem()
    // 设置自定义的title
    navItem.titleView = titleLabel

    // 创建左侧按钮
    let leftButton = UIBarButtonItem(title: "leftButton", style: .plain, target: self, action: nil)
    leftButton.tintColor = UIColor.red

    // 创建右侧按钮
    let rightButton = UIBarButtonItem(title: "rightButton", style: .plain, target: self, action: nil)
    rightButton.tintColor = UIColor.red

    // 添加左侧、右侧按钮
    navItem.setLeftBarButton(leftButton, animated: false)
    navItem.setRightBarButton(rightButton, animated: false)

    navigationItem.setHidesBackButton(true, animated: false)
    // 把导航栏组件加入导航栏
    navBar.pushItem(navItem, animated: false)

    // 导航栏添加到view上
    self.view.addSubview(navBar)
}

第三步就是调用:

override func viewDidLoad() {
    super.viewDidLoad()
     test()
}

通过以上方法大家就可以使用了:
源码下载地址UINavigation01

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值