用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号大小了

时间: 2024-11-16 02:18:02

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

小结:Swift、OC语言中多target在代码中如何区分

一.对swift工程 经实践,网上的方法都无法成功,后来思考DEBUG宏定义方式,经实测有效,方式如下: 注意:不能把swift flags 小三角折叠后双击设置-DTarget4AppStore, 这样会自动清空之前生成或定义的宏定义 #if Target4AppStore self.view.backgroundColor = UIColor.yellow//效果在运行appstore target时,通过界面调试工具可看到背景图为黄色 #else self.view.backgroundC

《从零开始学Swift》学习笔记(Day 20)——函数中参数的传递引用

原创文章,欢迎转载.转载请注明:关东升的博客 参数的传递引用 类是引用类型,其他的数据类型如整型.浮点型.布尔型.字符.字符串.元组.集合.枚举和结构体全部是值类型. 有的时候就是要将一个值类型参数以引用方式传递,这也是可以实现的,Swift提供的inout关键字就可以实现.看下面的一个示例: func increment(inoutvalue:Double, amount:Double = 1.0) {     value += amount }   var value : Double = 

ABAP webdynpro的view navigation和WebUI的view navigation

虽然ABAP webdynpro已经不是SAP未来主流的UX技术,但是在很多老的模块里使用还是很广泛. 在[SAP help]里有关于这个应用的详细介绍: 而ABAP webdynpro的技术很多地方实现都和WebUI非常类似. 下图是ABAP webdynpro的navigate方法,实际操作是delegate到view的view manager: WebUI类似: Webdynprode navigate方法是把和navigation相关的数据填到一个line structure里,再ins

swift - xcode10 - 点击事件交互BUG - (手势和button的addTarget方法)

1. 现象button 点击闪退:没有任何原因 ,在听云检测上,显示 BUG2: 手势 没有任何作用,哪怕设置  isUserInteractionEnabled 和isEnabled 为true 都不行 原因 及 解决方法 :没有懒加载.. 解决方法: 1 添加lazy 2.如果不在这个地方 添加方法或者手势. 在创建了控件之后,在添加方法也可以解决 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Menlo; color: #00a0

textEditorDemo:基于swift的一个富文本编辑器

TextEditorDemo swift:textEditorDemo一个简单的富文本编辑器 一个简单的富文本编辑器 (IPhone 5s Xcode 6.3 swift 1.2) 实现并解决了一些基本功能: 更改字体大小,粗体,下划线,斜体字.并进行了数据的存储 更多请查看网友StringX的文章:http://www.jianshu.com/p/ab5326850e74/comments/327660#comment-327660 在TextView中添加照片,以及照片存储 实现键盘隐藏和弹

【IOS笔记】Views

Views Because view objects are the main way your application interacts with the user, they have many responsibilities. Here are just a few: 通过view对象是与用户交互的主要方式,它们有很多责任,下面是其中一些: Layout and subview management   布局 A view defines its own default resizin

响应式网页设计简单入门(强烈推薦!!!!)

响应式网页设计简单入门 Overview: 构造基本的HTML页面 动态加载样式表 Viewport 字体缩放 侧边栏 导航菜单 图片自适应 其他 总结 说到响应式网页设计(Responsive web design),最近在谷歌加上碰到个奇葩贴子,通过一个原始到无法再简单的网页Motherfucking Website及满屏幕的fuck道出了网页设计的真谛,这孩子不是个激进分子就是个报复社会型的货没错,虽然整篇文章就像是泼妇骂街,但我特么是笑着读完的.. 统计了下全文共用Fuck (包括fuc

Android学习路线(二十四)ActionBar Fragment运用最佳实践

通过前面的几篇博客,大家看到了Google是如何解释action bar和fragment以及推荐的用法.俗话说没有demo的博客不是好博客,下面我会介绍一下action bar和fragment在实战中的应用,以及相关demo源码,希望和大家相互交流. 了解过fragment的同学们应该都知道,fragment是android 3.0版本才出现的的,因此如果要在支持android 3.0一下版本的工程中使用fragment的话是需要添加Support Library的.具体如何添加我就不再赘述

响应式网页设计简单入门

文章表达的中心思想就是最后的那句引用"最好的设计是尽量少的设计".最重要的是我意识到平时我们都忽略了一个常识:一张未经加工的原始HTML文档就已经是响应式的了,根本不用什么CSS media属性或者指定任何样式. 通过查看HTML代码发现作者果然留下了一些信息,于是在twitter上找到他表达了我对他的膜拜之情以及想把如此精华的文章翻译成中文的意愿.作者很爽快地答应了23333~~(X___X)~~. 于是就有了同样奇葩的中文版本:妈逼的网站,原文的精髓可能由于我自身对这类表达的驾驭的