iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(一)
来源:互联网 发布:金山恢复数据恢复软件 编辑:程序博客网 时间:2024/05/16 12:47
百思不得姐Swift版总结(一)
最近在着手做一个关于新闻类的项目:百思不得姐
由于本人对swift有着独特的爱好,所以在OC写完之后空余的时间也在努力使用swift实现一下,但是中间遇到了不少的问题,就总结了几个重要的地方。
这里只有三个比较麻烦的,后面文章中笔者会陆续更新相关技术总结
swift中没有宏的概念,pch文件也没有OC中这么简单
所以如果我们要定义一个全局变量,比如颜色,一般使用let直接定义
/**
* 颜色定义
*/
let iCocosCommonBgColor = UIColor(red: (215)/255.0, green: (215)/255.0, blue: (215)/255.0, alpha: 1.0)
使用字典的方法设置导航栏的主题
在swift中设置导航栏的主题我们同样使用字典实现,但是却和OC大不一样,笔者也是弄了很久才成功,因为之前都只是简单的使用字典,下面就来看看咱们应该怎么做:
1 //获取tabBarItem主题 2 var tabBar : UITabBarItem = UITabBarItem.appearance() 3 4 //设置文字不同状态的颜色 5 let dictNor = NSDictionary(object: UIColor.grayColor(), forKey: NSForegroundColorAttributeName) 6 let dictHigh = NSDictionary(object: UIColor.orangeColor(), forKey: NSForegroundColorAttributeName) 7 8 //设置文字的大小 9 let dictFont = NSDictionary(object: UIFont.systemFontOfSize(12.0), forKey: NSFontAttributeName)10 11 //使用上面的字典设置主题属性12 tabBar.setTitleTextAttributes(dictNor as [NSObject : AnyObject], forState: UIControlState.Normal)13 tabBar.setTitleTextAttributes(dictHigh as [NSObject : AnyObject], forState: UIControlState.Selected)14 15 tabBar.setTitleTextAttributes(dictFont as [NSObject : AnyObject], forState: UIControlState.Normal)
实现每个子控制器左边返回按钮,还原手势返回功能
1:首先遵守协议
- UIGestureRecognizerDelegate
2:设置代理
//设置手势代理
- self.interactivePopGestureRecognizer.delegate = self
1 //实现push方法,处理后面的业务逻辑 2 override func pushViewController(viewController: UIViewController, animated: Bool) { 3 4 //判断是否是根控制器 5 if self.childViewControllers.count > 0 { 6 7 //如果不是根控制器,则隐藏底部的tabBar 8 viewController.hidesBottomBarWhenPushed = true 9 10 /**11 * 创建一个按钮,并且设置对应的属性12 */13 14 //初始化15 var btn: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton16 17 //frame18 btn.frame = CGRectMake(0, 2, 70, 30)19 20 //设置位子及文字不同状态的颜色21 btn.setTitle("返回", forState: UIControlState.Normal)22 btn.setTitleColor(UIColor.grayColor(), forState: UIControlState.Normal)23 btn.setTitleColor(UIColor.redColor(), forState: UIControlState.Highlighted)24 25 //设置不同状态的图片26 btn.setImage(UIImage(named: "navigationButtonReturn"), forState: UIControlState.Normal)27 btn.setImage(UIImage(named: "navigationButtonReturnClick"), forState: UIControlState.Highlighted)28 29 //设置内容和图片的边距30 btn.contentEdgeInsets = UIEdgeInsetsMake(0, -15, 0, 0)31 btn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 10)32 33 //设置每一个子控制器的左边为我们自定义的放回按钮34 viewController.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: btn)35 36 //添加点击事件37 btn.addTarget(self, action: "backClcik", forControlEvents: UIControlEvents.TouchUpInside)38 }39 40 //设置全局背景颜色41 viewController.view.backgroundColor = iCocosCommonBgColor42 43 //push进入下一个控制器44 super.pushViewController(viewController, animated: true)45 }
4:实现返回按钮方法
5:实现子控制器的手势返回
//点击放回按钮返回到上一个控制器 func backClcik() { self.popViewControllerAnimated(true) }
5:实现子控制器的手势返回
//根据上面遵守的协议和设置的代理,在这个方法中设置子控制器可以实现点手势返回功能 func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool { return self.childViewControllers.count > 0 } }
swift控制器切换
关于控制器的切换swift喝Objective—C中并没有太多的区别(这里只说两种,其他的在下面的文章中会介绍到),最大的也就是布尔值的写法
- Objective—C:YES和NO
- swift:true和false
下面来看看两者的实现
OC版
- 模态方式
[self presentViewController:vc animated:YES completion:nil]; [self dismissViewControllerAnimated:YES completion:nil];
- push方式
[self.navigationController pushViewController:vc animated:YES]; [self.navigationController popViewControllerAnimated:YES];
Swift版
- 模态方式
self.presentViewController(vc, animated: true, completion: nil) self.dismissViewControllerAnimated(true, completion: nil)
- push方式
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.popViewControllerAnimated(true)
最后看看基本的界面实现
版权声明:欢迎转载,请贴上源地址: http://www.cnblogs.com/iCocos/(iOS梦工厂)
更多精彩请关注github:https://github.com/al1020119?tab=repositories
本博文由博主(iCocos)独立编写或者借鉴别人的好文章进行修改而成,如果不对的地方望指正,谢谢! 笔者所有相关博客已转至git博文:http://al1020119.github.io/此博文不会再更新,也很少会回复,如有疑问请联系我!Q Q:2211523682/790806573微信:18370997821/13148454507微博WB:http://weibo.com/u/3288975567?is_hot=1git博文:http://al1020119.github.io/github:https://github.com/al1020119
分类: iOS开发之项目实战篇,iOS开发学习路线(完整笔记)
阅读全文
0 0
- iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(一)
- iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(二)
- iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(三)
- iOS项目开发实战(Swift)—项目目录和结构
- iOS项目开发实战(Swift)—简单浏览器
- iOS项目开发实战(Swift)—查询天气小应用
- iOS项目开发实战(Swift)—Button和Alert学习
- iOS项目开发实战(Swift)—View之间传递数据
- iOS项目开发实战(Swift)—初探TableView
- iOS项目开发实战(Swift)—代理的使用
- iOS项目开发实战(Swift)—View之间传递数据
- iOS项目开发实战——开发基于Handoff的App(Swift)
- Swift开发iOS项目实战视频教程(一)---iOS真简单
- Swift开发iOS项目实战视频教程(十三)---一站到底9(闯关开锁逻辑)
- Swift开发iOS项目实战视频教程(六)---一站到底2(页面跳转方法)
- Swift开发iOS项目实战视频教程(十)---一站到底6(倒计时与UIAlertController)
- 第一记— Swift版百思不得姐
- iOS开发项目实战——Swift实现图片轮播与浏览
- Java基本数据类型深入解析
- 简单排序算法时间空间复杂度分析及应用(5)-堆排序
- 进行curl请求需要主要的问题
- [LeetCode] 36. Valid Sudoku
- 通过 Oracle 日志文件了解 CRS 的启动过程
- iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(一)
- 详细介绍Logger日志
- Jvav 中Synchronized的使用
- CI持续集成系统环境---部署Jenkins完整记录
- java 笔记
- strlen与sizeof区别
- web1.0与web2.0的区别介绍附举例
- 剑指offer——最小的K个数(堆排或partition,复习排序算法思想精髓)
- [python每日一练]--0005:把图片大小控制在iphone5的分辨率以下