1.在oc中大家都习惯建一个.h全局属性类,把一些常用的属性或者宏定义放在里面 而Swift中也可以如此 并且不用在BuildSettings里的SearchPaths设置路径,直接创建一个类就可以了 很方便的 我把简单常用的几个方法放在这里
//MainScreen Height Width
let SCREEN_WIDTH = UIScreen.main.bounds.size.width
let SCREEN_HEIGHT = UIScreen.main.bounds.size.height
//RGB颜色转换(16进制->10进制)
func RGBCOLOR(rgbValue : Int) -> UIColor {
return UIColor(red: ((CGFloat)((rgbValue & 0xFF0000) >> 16))/255.0, green: ((CGFloat)((rgbValue & 0xFF00) >> 8))/255.0, blue: ((CGFloat)(rgbValue & 0xFF))/255.0, alpha: 1.0)
}
//CGRect
func aFrame(x : CGFloat ,y : CGFloat , width : CGFloat , height : CGFloat) -> CGRect{
return CGRect(x: x, y: y, width: width, height: height)
}
//空数组判断
func IS_ARRAY(array : Array<Any>) -> Bool{
return array.isEmpty && array.count != 0
}
//列向比例
func WidthScale(number : CGFloat) -> CGFloat{
return UIScreen.main.bounds.size.width/375*(number)
}
//纵向比例
func HeightScale(number : CGFloat) -> CGFloat{
return UIScreen.main.bounds.size.width/667*(number)
}
2.oc和swift中异步线程同步线程的区别
oc中的用法
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), code)
dispatch_async(dispatch_get_main_queue(),code)
swift中的用法
DispatchQueue.global().async {code}
DispatchQueue.main.async {code}
对比可以看出 这两个方法区别不是很大 在swift中的语法更简单明了
3.block块的使用
oc中的用法
//B页面
//创建一个带字符串参数的块属性
@property(nonatomic,strong)void(^saveBlock)(NSString *);
//在这里用块传参
!self.saveBlock?:self.saveBlock(dataString);
//A页面
BViewController *bView = [[BViewController alloc]init];
bView.saveBlock = ^(NSString *code){
//这里接收参数并进行操作
};
[self.navigationController pushViewController:bView animated:YES];
swift中的用法
//B页面
//同样先声明一个带参数的块属性
typealias blockAction = (String) ->()
var blockText : blockAction?
//传参
blockText!(dataString!)
//A页面
let bView = BViewController()
bView.blockText = { (code) -> () in
//这里接收参数并进行操作
}
self.navigationController?.pushViewController(bView, animated: true)
4.桥接
在Swift中有可能会遇到要用oc的代码 就比如常用的FMDB 想在swift的项目中用FMDB就需要用到桥接了
先用Pods导入FMDB库 然后command+n新建一个.h类
取名为Bridging方便查找,然后在里面导入FMDB.h的头文件 大概这个样子
//
// WHBridgingHeader.h
// Created by 喵哥&... on 2017/6/9.
//
#ifndef WHBridgingHeader_h
#define WHBridgingHeader_h
#import "FMDB.h"
#endif /* WHBridgingHeader_h */
然后在BuildSettings里设置一下路径
969F2A53-E116-4DA6-AFC5-845BE91C699F.pngOK 收工。
网友评论