技术好文共享:第七章美化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

相关文章
|
5月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
214 3
|
5月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
148 0
|
5月前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
134 0
|
5月前
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
103 0
|
6月前
|
前端开发
网页设计04 WEB端按钮设计技巧,交互规范参考资料,点击事件,什么是3:1 ,3:1 的介绍,网页设计牵扯的知识整理成口诀
网页设计04 WEB端按钮设计技巧,交互规范参考资料,点击事件,什么是3:1 ,3:1 的介绍,网页设计牵扯的知识整理成口诀
|
7月前
|
搜索推荐
CSDN自定义模块全攻略,DIY系统原有样式打造出你的专属个性化主页!
CSDN自定义模块全攻略,DIY系统原有样式打造出你的专属个性化主页!
121 0
|
8月前
|
UED 容器
产品入门第五讲:Axure交互和情境
产品入门第五讲:Axure交互和情境
|
小程序 API Android开发
小程序开发-第三章第四节点击查看大图,保存壁纸-全栈工程师之路-中级篇
小程序开发-第三章第四节点击查看大图,保存壁纸-全栈工程师之路-中级篇
178 0
小程序开发-第三章第四节点击查看大图,保存壁纸-全栈工程师之路-中级篇
|
JavaScript Android开发 iOS开发