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
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! 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:实现返回按钮方法
    //点击放回按钮返回到上一个控制器    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
分类: iOS开发之项目实战篇,iOS开发学习路线(完整笔记)
阅读全文
0 0
原创粉丝点击