iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(一)

百思不得姐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
3:实现push方法
复制代码
 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:实现返回按钮方法
    //点击放回按钮返回到上一个控制器
    func backClcik() {
        self.popViewControllerAnimated(true)
    }

5:实现子控制器的手势返回
    //根据上面遵守的协议和设置的代理,在这个方法中设置子控制器可以实现点手势返回功能
    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
        return self.childViewControllers.count > 0
    }
     }

 


 
swift控制器切换
 
关于控制器的切换swift喝Objective—C中并没有太多的区别(这里只说两种,其他的在下面的文章中会介绍到),最大的也就是布尔值的写法
  1. Objective—C:YES和NO
  2. 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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值