技术好文共享:第七章美化DetailView界面

简介: 技术好文共享:第七章美化DetailView界面

本项目是《beginning iOS8 programming with swift》中的项目学习笔记==》全部笔记目录


------------------------------------------------------------------------------------------------------------------


1. 往DetailViewController里拖一个Tabel View控件,设置prototype cells为1,将imageView控件在文档视图中拖到Table View里面,作为Header,设置表格的数据源和代理。


2. Aspect Fit等图片设置原理如下图:


3. 往原型Cell里拖入两个Label控件,分别设置文字为Name和Value。并新建一个自定义UITableViewCell类DetailTableViewCell,并定义两个成员变量,关联到控件上。


4. 修改DetailViewController中的成员变量为Restaurant,实现表格数据源方法(貌似这里不用连线tableView到IBOutlet):


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


let cell = tableView.dequeueReusableCellWithIdentifier("DetailTableCell", forIndexPath: indexPath) as DetailTableViewCell


switch indexPath.row {


case 0:


cell.nameLabel.text = "Name"


cell.valueLabel.text = restaurant.name


case 1:


cell.nameLabel.text = "Type"


cell.valueLabel.text = restaurant.type


case 2:


cell.nameLabel.text = "Location"


cell.valueLabel.text = restaurant.location


case 3:


cell.nameLabel.text = "Been here"


cell.valueLabel.text = restaurant.isVisited ? "I've been here" : "No"


default:


cell.nameLabel.text = ""


cell.valueLabel.text = ""


}


// 设置单元格背景色


cell.backgroundColor = UIColor.clearColor()


// 清除多余的表格行


tableView.tableFooterView = UIView(frame: CGRectZero)


// 自定义单元格分割线


tableView.separatorColor = UIColor.orangeColor()


return cell


}


效果图:


5. 自定义导航栏主题


在didFinishLaunchingWithOptions方法中自定义导航栏,也可以自定义一个导航控制器类,并在initialize方//代码效果参考:http://www.lyjsj.net.cn/wx/art_23989.html

法中设置导航栏主题

// 设置导航栏背景色


UINavigationBar.appearance().barTintColor = UIColor.orangeColor()


// 设置导航栏上面Item的颜色


UINavigationBar.appearance().tintColor = UIColor.whiteColor()


// 设置导航栏文字字体


UINavigationBar.appearance().titleTextAttributes = 【NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: UIFont.systemFontOfSize(22.0)】


6. 设置返回按钮文字为空(viewDidLoad):


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


7. 设置导航栏标题(Detail的viewDidLoad):


self.title = restaurant.name


8. 设置滑动隐藏导航栏。可以在storyboard中设置OnSwipe勾上,但是这样会对全局的导航栏生效,所以如果只想Restaurant表格滑动隐藏导航栏而Detail表格滑动不隐藏,最好是在代码里设置。可以在哪儿设置合适呢?viewDidLoad中吗?如果在Restaurant中设置true,在Detail中设置false,但是导航后并不能按照预期的变化。因为viewDidLoad方法只会在界面初次加载的时候执行一次。因此,在Restaurant控制器和Detail控制器的viewWillAppear方法中分别执行:


override func //代码效果参考:http://www.lyjsj.net.cn/wx/art_23987.html

viewWillAppear(animated: Bool) {

super.viewWillAppear(animated)


self.navigationController?.hidesBarsOnSwipe = true


}


override func viewWillAppear(animated: Bool) {


super.viewWillAppear(animated)


self.navigationController?.hidesBarsOnSwipe = false


self.navigationController?.setNavigationBarHidden(false, animated: true)


}


9. 现在导航栏文字颜色是白色,但是状态栏颜色是黑色,需要处理一下。


9.1 如果是修改一个控制器的状态栏:


override func preferredStatusBarStyle() ->UIStatusBarStyle {


return .LightContent


}


9.2 如果是修改整个应用程序的状态栏:


1. 修改View controller-based status bar appearance设置为NO


  2. 在didFinishLaunchingWithOptions方法中:


UIApplication.sharedApplication().statusBarStyle = .LightContent

相关文章
|
数据采集
总结一下最近看到的几个数字化转型成功案例
总结一下最近看到的几个数字化转型成功案例
|
12月前
|
存储 人工智能 弹性计算
函数计算部署 AI 大模型解决方案测评
函数计算部署 AI 大模型解决方案测评
|
机器学习/深度学习 算法 Python
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
|
机器学习/深度学习 搜索推荐 数据挖掘
24个终极数据科学项目(可免费获取资源)
本文精选了24个数据科学项目,并囊括了各个领域和各种不同大小的数据集。另外,所有的数据集都是开源、可免费获取的。
6890 0
|
弹性计算 安全 数据安全/隐私保护
阿里云Palworld/幻兽帕鲁服务器搭建不求人:「玩转Palworld/幻兽帕鲁」一文学会
对于《幻兽帕鲁》的忠实玩家们来说,与好友一起联机探险无疑是增添游戏乐趣的重要方式。但如何快速且高效地搭建一个稳定的联机服务器呢?今天,就为大家带来一篇详尽的教程,让你轻松学会自建《幻兽帕鲁》服务器的方法。
|
缓存 JavaScript 前端开发
前端面试题整理?
前端面试题整理?
168 0
|
SQL 关系型数据库 MySQL
从一个案例深入剖析InnoDB隐式锁和可见性判断(2)
从一个案例深入剖析InnoDB隐式锁和可见性判断
从一个案例深入剖析InnoDB隐式锁和可见性判断(2)
|
API iOS开发
iOS多个线程发起相同请求,避免重复
有时候在调用多个模块时,会对同一个API进行多次请求,但因为内容都是一样的,所以最好就是加上锁,防止重复请求造成网络资源浪费
314 0
|
JavaScript 自然语言处理
彻底理解NodeJs中的回调(Callback)函数
究竟什么是回调函数(Callback),网上有许许多多的文章,大部分看得人云里雾外,这些文章大概分成两类,第一类堆砌了太多的术语,基本上不明白术语就没法看,另一类反过来,不讲术语,完全是举一些脱离编程的生活化例子来类比,看的人更加晕头转向。
2411 57