百思不得姐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! UIButton
16
17 //frame
18 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 = iCocosCommonBgColor
42
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