一,手动导入Alamofire和Kingfisher库,两文件重复,RedirectHandler,SessionDelegate,需要对Kingfisher库文件进行重命名,这样是改动最少的:
1,将RedirectHandler.swift文件名直接改为KingfisherRedirectHandler.swift。
2,将SessionDelegate.swift改为KingfisherSessionDelegate.swift,然后在其类中:
第31行,class KingfisherSessionDelegate: NSObject;
第150行,extension KingfisherSessionDelegate: URLSessionDataDelegate。
3,在Kingfisher库中的ImageDownloader.swift文件中:
第140行,private let sessionDelegate: KingfisherSessionDelegate;
第156行,sessionDelegate = KingfisherSessionDelegate()。
二,Swift项目导入SDWebImage使用。
下载SDWebImage,https://github.com/rs/SDWebImage;
并且找到当前库源码,然后Add Files to “xxx.project”……;
创建一个.h文件,命名为SDWebImage+Header.h,
内部为:
#ifndef SDWebImage_Header_h #define SDWebImage_Header_h #import "UIImageView+WebCache.h" #endif /* SDWebImage_Header_h */
找到Target – Build Setting – Swift Comppilier,设置其Objective-C Bridging Header,将其DWebImage+Header.h所在当前项目中的地址加进去即可。
三,swift,CATransaction动画事务。
@objc func singAction(_ tap: UITapGestureRecognizer) -> Void{
if let act = action,let tg = target{
CATransaction.begin()
let shake: CABasicAnimation = CABasicAnimation(keyPath: "opacity");
shake.autoreverses = true;
shake.repeatCount = 0;
shake.speed = 2.5;
shake.duration = 0.35;
shake.fromValue = 1.0;
shake.toValue = 0.0;
shake.isRemovedOnCompletion = false;
CATransaction.setCompletionBlock({
() -> Void in
if false == self.operateValid {
self.operateValid = true;
_ = tg.perform(act, with: self)
self.perform(#selector(self.settingOperateValid(_ :)), with: false, afterDelay: TimeInterval(self.operateInterval));
}else{
print("点击的太快了");
}
})
layer.add(shake, forKey: "opacity");
CATransaction.commit()
}
}
四,swift里边如果要用KVO监听属性,属性的修饰必须如下:
@objc dynamic var isKeep: Bool = false;
需要@objc dynamic去修饰;

