A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一行代码一场梦,大家好我是阿达!今天跟大家分享的部分是『自订导览列外观』。以下是我们将要改变的部分:

        变更导览列的背景颜色
        变更导览列的字型
        自订返回按钮的颜色
        变更返回键的标题

        自从 iOS5 之后 Apple 导入外观 API , UIApperance 让开发者可以很轻易的自订大部份的 UIKit 控制元件的外观,包含整个应用程式的导览列。 想要自订导览列的外观,你可以使用 appearance() 来取得类别的外观代理 (appearance proxy):

        想要修改导览列的背景颜色,设定 barTinColor 属性为你喜爱的颜色:
//修改导览列的颜色
UINavigationBar.appearance().barTintColor = UIColor (red: 231.0 / 250, green: 95.0 / 250, blue: 53 / 250, alpha: 0.3)

把他加在 AppDelegate.swift  中 didFinishLaunchingWithOptions 方法中。


接下来是标题的样式可以借由 titleTextAttribustes  属性的设定来做变更:

               //改变标题样式

        if let barFont = UIFont (name: "AvenirNextCondensed-DemiBold", size: 22.0){
        UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor(), NSFontAttributeName:barFont]
        }






以上这段程序在说明,我们指定 AvenirNextCondensed-DemiBold 为字型,并将颜色设定为白色。

很抽象吗? 没事的,按下 command + R 吧!





我们看看左上角的返回键,现在还是显示着『Food Pin』的标题。如果今天我们想让画面更简洁一点,把提移除呢?

        让我们进到 RestaurantTableViewController 中的viewDidLoad去修改:

        //移除返回按鈕標題清空

        self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)



加好了之后,当然就是快乐的command + R啦!



恩~ 真的是干净了很多,可是蓝色的按钮,跟橘色的底。。。真的很不搭。。。有办法解决吗?

        当然有的!我们回到 AppDelegate.swift 中继续在didFinishLaunchingWithOptions方法中,加入以下程式:

//將按鈕改成白色
         UINavigationBar.appearance().tintColor = UIColor.whiteColor()


別懷疑~接下來就是 command + R




恩~ 看起来真的顺眼多了,如果我们想多做一些改变,我们看到导览列上一片空白,感觉如果如果让他显示我们所点选的餐厅是不是更好?
       
        这超级容易的呢!只要设定细节视图的标题为餐厅名称就可以啦!,我们把以下的程式码插入, DetailViewController 的 viewDidLoad 当中:

        //顯示餐廳名字在導覽列上
        title = self.restaurant.name




恩~相信大家都知道,command + R  按下去,见证奇迹吧!



就是这么轻易,就是这么容易,让我们的app变得更有设计感。


        接下来要跟大家分享的是,关于隐藏导览列,没错,你没听错,我们接下来要做的就是隐藏导览列。有的时候我们会需要更多的画面在你的主画面上,而上面的导览列就占了很多部分,在以前如果要隐藏导览列的话,我们必须要有自己的解决方案,iOS8  推出了让你可以用滑动或是点击的方式来隐藏导览列。


        在 Storyboard 的 Navigation Controller  Scene 下面选取 『Navigation  Controller 』,在里面有一个叫做『On Swipe』。启动了之后当你的画面往下拉,就会发现上面的导览列不见了,当你滑回去之后会发现他又出现了。







這樣的確很方便,但是會有兩個問題,第一就是導覽回表格視圖控制器之後,無法隱藏。 第二個問題就是細節視圖的導覽列不見了。




要解决这个方法其实很简单,针对第一个问题,因为 ViewDidLoad 只有当视图第一次被载入的时候才会呼叫,第二次之后就不会呼叫了,之后第二个问题因为隐藏的导览列被带到下一页的细节部分。

        所以我们必须告诉 App 要重新显示导览列。幸好,UIViewController 提供了几个方法来回应视图事件。 不像 viewDidLoad,这些方式在每次视图显示或移除的时候都会被呼叫。当视图显示的时候, viewWillAppear 与 viewDidLoad 就会被呼叫。 不同点在于说,当画面要准备显示的时候,viewWillAppear 会被呼叫,当一个画面在画面显示的时候则呼叫 viewDidLoad。

因此插入以下的程式到 RestaurantTableViewController.swift  中:

//處理導覽列
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.hidesBarsOnSwipe = true
    }




针对细节的导览列的修改,我们要在 DetailVIewController.swift 加入以下程式:

    //隱藏導覽列

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.hidesBarsOnSwipe = false
        self.navigationController?.setNavigationBarHidden(false, animated: true)
    }




完成了之后按下 command + R 来看看结果







我们会看到,这样子一来我们的表格视图(tableView)的导览列消失了之后,进入细节图之后导览列就没有消失了!感觉是不是好棒棒的啊!







5 个回复

倒序浏览
最后我们要变更的是状态列的样式,状态列(Status Bar) 的样式没有配合导览列的文字颜色,




现在我们看到的状态列包括『电信业者』『wifi讯号』『时间』『电池状态』。这些都是黑色的,如果可以让他变成白色的,整体感是不是更好?

        在早期的 iOS 版本中,状态列永远是黑色的,无法改变。iOS7 释出之后,允许开发者改变每个视图控制器的状态列。我们将可以使用 UIStatusBarStyle 来指定状态列内容是深色还是亮色,系统预设是深色系。就像现在我们看到的一样。

        假如小伙伴想要把状态列的样式改成亮色系的,我们点选一个专案Food Pin  





加入一个叫做 『view controller-based status bar appearance』的 key  ,再将Value 设为 NO。





之后我们再到 AppDelegate.swift 里面的 didFinishLaunchingWithOptions方法,在里面加入以下的程式码:

//將狀態列修改成亮色系
        UIApplication.sharedApplication().statusBarStyle = .LightContent




最后我们按下 command + R 来看看





没错,我们成功地把状态列也修改成白色的了!今天分享的细节修改看起来很微小,但是小伙伴们将来在 App 送审核的时候,这些细节都有可能是被退件的理由。虽然之前承诺过小伙伴要用简单的方式来说明,但是阿达认为这些细节部分,有可能就是将来小伙伴们在排行版上高居不下的原因,让我们用一行一行的代码,一步一步的实现我们的梦想,我是阿达,我们下次见。



回复 使用道具 举报
18530670911 来自手机 初级黑马 2015-6-26 21:28:16
藤椅
:'(:'(:'(下好大雨啊,学习学的头疼。
回复 使用道具 举报
赞一个,,加油
回复 使用道具 举报
18530670911 发表于 2015-6-26 21:28
下好大雨啊,学习学的头疼。

謝謝支持,最近天氣不穩定,要多保重身體
回复 使用道具 举报

謝謝小夥伴讚,喜歡的話之前的文章也可以多看看喔!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马