用swift实现navigation bar的完全透明 & navigation bar中button的字体大小调整

简介:

这几天在项目中遇到的关于navigation bar的一些小问题以及解决的方法记录一下吧:

1.  完全透明navigation bar

有时候我们想要navigation viewcontroller顶部的navigation bar变得完全透明,我们首先想到是从story board下手,但是尝试了半天,也不能达到完全透明的效果


选择这里的Translucent Navigation Bar只能让bar变成那种可以稀释背景色的毛玻璃的效果,那么究竟应该如何才能把整个navigation bar都变成透明呢?

答案是通过代码实现:

非常简单,在viewDidload或者DidAppear中,加入下面3行代码:

        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.translucent = true

自己动手试一下效果吧


2. 改变bar中的backButton或者leftBarButton的样式

如果我们采用了navigation viewcontroller系列,在我们切换到下一页面的时候,在bar的最左面会自动出现一个返回的按钮,这个按钮的文字默认是上一个页面的barItem的文字内容,这些都是默认的,会自动帮我们建立。

那有时候会遇到的问题是,如果A页面的bar Item的文字内容很长,从A页面push到B页面后,这个返回按钮的文字就会很长,从而把B页面的item内容挤到右侧,这样很不美观。

这里我们可以有两种方式来处理,

1> 我们可以新建一个新的按钮,并且赋予它文字,样式等

let backButton = UIBarButtonItem(title: "< Back", style: UIBarButtonItemStyle.Plain, target: self, action: "goBack")
navigationItem.leftBarButtonItem = backButton
navigationItem.leftBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Chalkduster", size: 20)!], forState: UIControlState.Normal)

这样做的缺点是,你没有办法从屏幕的左侧向右滑屏实现返回的操作了,而且还必须在goBack的function中自己手动调用navigation的pop方法来达到返回的效果。

2> 或者我们可以来改变这个返回按钮的样式,比如手动把它的文字字体大小调整下

        let customFont = UIFont(name: "heiti SC", size: 12.0)
        UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: customFont!], forState: UIControlState.Normal)
注意,因为我们其实是改变的UIBarButtonItem ,所以,这段代码我们要放到Appdelegate中来实现。这样,所有的bar中的button类的字体都被强制设定为12号大小了
目录
相关文章
|
Swift
Swift之自定义Button
Swift之自定义Button
226 0
Swift之自定义Button
Swift语言IOS8开发战记1.Button与Alert
      大家好,本人是个Swift开发的推崇者,自Swift推出以来,关于Swift语法的书籍像雨后春笋般冒了出来,但是市面上没有一本整合Swift与IOS8开发的书籍,为广大使用Swift开发IOS8的程序员来说带来了不小的难度。
880 0
|
4月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
288 2
|
2月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
54 3
|
1月前
|
存储 移动开发 Swift
使用Swift进行iOS应用开发:探索现代移动开发的魅力
【8月更文挑战第12天】使用Swift进行iOS应用开发,不仅能够享受到Swift语言带来的简洁、快速、安全的编程体验,还能够充分利用iOS平台提供的丰富资源和强大功能。然而,iOS应用开发并非易事,需要开发者具备扎实的编程基础、丰富的实践经验和不断学习的精神。希望本文能够为您的iOS应用开发之旅提供一些有益的参考和帮助。
|
2月前
|
Swift iOS开发 Kotlin
苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数
Swift可通过扩展实现类似Kotlin作用域函数效果。如自定义`let`, `run`, `with`, `apply`, `also`,增强代码可读性和简洁性。虽无直接内置支持,但利用Swift特性可达成相似功能。
48 7
|
2月前
|
调度 Swift Android开发
苹果iOS新手开发之Swift中的并发任务和消息机制
Swift的消息机制类似Android的Handler,实现任务调度有三种方式: 1. **Grand Central Dispatch (GCD)**:使用`DispatchQueue`在主线程或后台线程执行任务。 2. **OperationQueue**:提供高级接口管理`Operation`对象。 3. **RunLoop**:处理事件如输入源、计时器,类似Android的`Looper`和`Handler`。 **示例**: - GCD:在不同线程执行代码块。 - OperationQueue:创建操作并执行。 - RunLoop:用Timer添加到RunLoop中。
78 2
|
2月前
|
安全 编译器 Swift
探索iOS开发:Swift语言的现代魔法
【7月更文挑战第11天】本文深入探讨了Swift编程语言,它如何革新iOS开发领域,以及它为开发者带来的独特优势。我们将从Swift的基础语法出发,通过实际案例分析其性能优化技巧,最后讨论Swift在跨平台开发中的潜力。文章旨在为读者提供一个全面而深入的视角,了解Swift不仅仅是一门语言,更是一种推动创新的力量。
|
4月前
|
设计模式 前端开发 Swift
使用Swift进行iOS应用开发:深入探索与最佳实践
【5月更文挑战第24天】探索Swift在iOS开发中的深度应用与最佳实践。Swift以其简洁语法、类型安全、面向对象、高性能及与Objective-C的互操作性脱颖而出。使用Xcode设置开发环境,学习Swift语法,创建并设计项目,编写业务逻辑,同时进行调试和测试。遵循MVC模式,利用SwiftUI、并发特性,并注重内存管理,持续学习新工具和技术,以实现高质量应用开发。
|
4月前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
220 1