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

原创 2017年01月03日 01:40:10

从学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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Swift- 自定义导航栏背景、标题和返回按钮属性

废话少说,直接 看代码: //navigationBar的默认背景颜色 // UINavigationBar.appearance().tintColor = UIColor(red...

Swift自定义导航栏返回按钮

如何去除swift系统自带的导航栏返回按钮?可以自定义返回按钮在swift中,怎么替换系统自带的导航栏返回按钮?比如说我要替换成一张返回按钮图片,点击返回到上一页首先,看一下系统自带的导航栏返回按钮的...

Swift UINavigationController(导航控制器)的创建及导航栏的设置

Swift语言新建的项目入口为AppDelegate.swift 我们找到 func application(application: UIApplication, didFinishLaunc...

Swift - 适配iOS 11,部分问题

1. UITableview 顶部出现留白 解决方法: 添加以下代码 func tableView(_ tableView: UITableView, viewForFooterInSectio...

swift UINavigationController 导航控制器

一.创建项目  //略

Swift修改navigation bar背景颜色、标题及其颜色

操作root view controller //设置导航栏背景颜色 let bgColor = UIColor(red: x/255, green:y/225, blue: z/255, alp...

swift 3.0 -UINavigationController

//  AppDelegate.swift //  swift-UINavigationController 导航控制器 // //  Created by yidong on 16/9/30....

iOS 11 Swift-导航&状态栏&tableview适配

iOS 11运行项目变成了这个样。。 总结几个点: 1.状态栏重叠,字体颜色需要白色不是黑色。 2.导航栏上移了20个点。 3.tableview 上下都有空白。 ...

Swift 设置navigation左右两侧按钮

我们以设置右侧按钮为例,左侧方法类似 方法一,直接自定义文字 let item=UIBarButtonItem(title: "分享", style: UIBarButtonIte...

swift详解之二十七------------自定义UINavigationController的push和pop动画

自定义UINavigationController的push和pop动画我们这里先创建一个简单的工程 , 在storyboard 中拖一个导航控制器 , rootViewController 改成我们...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS Swift3.0自定义导航栏(UINavigation)
举报原因:
原因补充:

(最多只允许输入30个字)