总结下,在升级过程中,遇到的问题,都是干货,不玩虚的。
这东西也不是一天两天就能完成的,慢慢来吧。(持续更新)
遇到啥,写啥,没有规律的。参考下就行了。
- 用xcode9,打开之前的项目,运用xcode自带的转换器,先转换一次,然后按照提示,一步步改对应文件
UIView.hidden -> UIView.isHidden
UIAlertView->UIAlertController
let alertController = UIAlertController(title: "提示", message: "我是内容", preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
let okAction = UIAlertAction(title: "确认", style: .default, handler:{
(UIAlertAction) -> Void in
print("点击了确认")
})
// 当添加的UIAlertAction超过两个的时候,会自动变成纵向分布
alertController.addAction(cancelAction)
alertController.addAction(okAction)
self.present(alertController, animated: true, completion: nil)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(UInt64((CGFloat(duration) + 0.5)) * NSEC_PER_SEC)), dispatch_get_main_queue(), {
()->Void in
print("啦拉拉")
});
-->
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.5) {
print("啦拉拉")
}
用起来超级简单啊!!!
CGRectMake --> CGRect(x: 0, y:0, width:0 height: 0)
CGRectGetMinX(frame) --> frame.minX
CGRectGetMinY(frame) --> frame.minY
关于 CocoaPods 第三方库升级,如果用到了 swift 语言的三方库,请打开 use_frameworks!
由于我们的项目是 OC + swift 混编,在升级的过程中遇到一个问题,我用pod导入 SnapKit 4.0.0,导入的时候,build,报错;
直接拖拽文件夹,build,报错
最终方法,下载完源码之后,拖拽 SnapKit.xcodeproj 项目到项目中,在导入
SnapKit.framework,就能编译通过,并且能正常使用
由于我们的项目是 OC + swift 混编,在OC中调用swift方法,变量时,记着添加 @objc 关键字
通知的写法改变了
NotificationCenter.default.addObserver(self, selector: #selector(notificationAction(notification:)), name: NSNotification.Name(rawValue: kNotificationFeedbackMessage), object: nil)
通知方法前边要加上 @objc
@objc func notificationAction(notification:NSNotification){}
6.对应的UICollectionView/UITableView的方法都要重写,不过可以查找替换,另外要实现UICollectionViewDelegateFlowLayout,要不对应的layout方法不走。
备注:如果方法名不能自动提示的话,可以通过官方文档查找到
7.要想适配X,需要用到安全区(safe area),它最低支持 iOS 9,binggo,很多API被废弃了,继续解决吧,亲们。0.0
升级完之后,要干嘛,当然是要适配了,请看 iphoneX 适配那些事