第七章 美化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 :
cell.nameLabel.text = "Name"
cell.valueLabel.text = restaurant.name
case :
cell.nameLabel.text = "Type"
cell.valueLabel.text = restaurant.type
case :
cell.nameLabel.text = "Location"
cell.valueLabel.text = restaurant.location
case :
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方法中设置导航栏主题
// 设置导航栏背景色
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 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
第七章 美化DetailView界面的更多相关文章
- 第七章 探秘Qt的核心机制-信号与槽
第七章 探秘Qt的核心机制-信号与槽 注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用 ...
- (转)iOS Wow体验 - 第七章 - 操作图例与触屏人机工学
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第七章译文精选,其余章节将陆续放出.上一篇:Wow ...
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能
原文:[原创]构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测C ...
- 【黑金原创教程】【TimeQuest】【第七章】供源时钟与其他
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- 2017.11.6 JavaWeb-----第七章 JavaWeb常用开发模式与案例
JavaWeb-----第七章 JavaWeb常用开发模式与案例 (1)单纯的JSP页面开发模式 通过在JSP中的脚本标记,直接在JSP页面中实现各种功能.称为"单纯的JSP页面编程模式&q ...
- ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...
- 第七章 确保Web安全的HTTPS
第七章 确保Web安全的HTTPS 使用HTTPS通信机制可以有效防止信息窃听或身份伪装等安全问题. 1.HTTP缺点 [通信使用明文(不加密)]:内容容易被窃听. 加密处理防止被窃听.根据加密的对象 ...
- 第七章、Ajango自带auth模块
目录 第七章.Ajango自带auth模块 一.什么是auth auth是django自带的用户认证模块 二.auth模块的常用方法 三.拓展默认的auth_user表 第七章.Ajango自带aut ...
- [ABP教程]第七章 作者:数据库集成
Web开发教程7 作者:数据库集成 关于此教程 在这个教程系列中,你将要构建一个基于ABP框架的应用程序 Acme.BookStore.这个应用程序被用于甘丽图书页面机器作者.它将用以下开发技术: E ...
随机推荐
- JDK6与JDK7中String类subString()方法的区别
1.subString()方法的作用 subString(int beginIndex, int endIndex)方法的返回的是以beginIndex开始到 endIndex-1结束的某个调用字符串 ...
- tfs witadmin
有时候对TFS的操作需要使用命令行,因为无图形界面进行操作. 我们可以进入Visual Studio Tools使用Developer Command Prompt进行操作. 使用命令 witadmi ...
- C中不安全函数
C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库.最有害的罪魁祸首是不进行自变量检查的.有问题的字符串操作(strcpy.strcat.sprintf 和 gets).一般来讲,象“避免使用 st ...
- Sql-oracle and sqlserver differences
1.string contact operator Sqlserver use + or contact(sqlserver 2012) In oracle, you can also use con ...
- javascript原型Prototype
在javaScript创建对象一文中提到过:用构造函数创建对象存在一个问题即同一构造函数的不同实例的相同方法是不一样的,所以我们用原型把构造函数中公共的属性和方法提取出来进行封装,达到让所有实例共享的 ...
- Doctype文档类型、作用及触发方式
Doctype文档类型 1) 该标签可声明三种 DTD 类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 2) HTML 4.01 规定了三种文档类型:Strict.Transit ...
- selenium如何操作cookies实现免登录
执行接口测试或者某些自动化测试时,为了避免每次访问接口都需要登录操作,可以用访问接口时,把cookies信息传过去. 思路是先登录一次页面,获取到cookies信息,把cookies信息保存到本地文件 ...
- Vim配置及说明——IDE编程环境
Vim配置及说明——IDE编程环境 Vim配置及说明——IDE编程环境 1.基本及字体 2.插件管理 3.主题风格 4.窗口设置 5.目录树导航 6.标签导航 7.taglist 8.多文档编辑 9. ...
- js验证表单
在日常生活中,对于上班时间比较灵活的单位来说,如何能够及时.准确地令公司员工了解自己的上班时间是一个棘手的问题.公司管理人员不会一个挨一个地打电话通知,难免总有员工会弄错自己的上班时间.这样,可以求助 ...
- CSS3 Filter详解(改变模糊度 亮度 透明度等方法)
CSS3 Filter(滤镜)属性提供了提供模糊和改变元素颜色的功能.CSS3 Fitler 常用于调整图像的渲染.背景或边框显示效果. -webkit-filter是css3的一个属性,Webkit ...