Swfit5 Kingfisher 5.4.0 手动导入支持iOS10以下(iOS8,iOS9)
Kingfisher 最新版本 支持Swift5,但pod要求iOS10以上,
为了支持swfit5, pod 导入的时 要求最低使用 iOS 10 的系统,作者给出理由是iOS10以下的客户太少,找不到任何理由去支持。太任性了 哈哈!相信仍旧给一部分iOS 开发造成肯定的困扰。所以我找到以下方案处理既支持swift5又支持iOS10以下的系统,就是本地导入源码,不通过pod形式。
1.首先先创立一个新的工程,通过pod 把最新的版本的Kingfisher下载下来,从Pods 文件夹 找到源码,而后将源码拖到一个新的工程中。
2.把源码进行以下的修改,而后运行就可。
// MemoryStorage.swfit 75行cleanTimer = .scheduledTimer(withTimeInterval: config.cleanInterval, repeats: true) { [weak self] _ in guard let self = self else { return } self.removeExpired() }// 替换如下: cleanTimer = Timer.init(timeInterval: config.cleanInterval, target: self, selector: #selector(removeExpiredFunc), userInfo: nil, repeats: true) cleanTimer?.fire() 并且在该类增加一个方法 @objc func removeExpiredFunc() { self.removeExpired() } // ImageModifier.swift 里面 96行return image.imageFlippedForRightToLeftLayoutDirection() // 替换如下:if #available(iOS 9.0, *) { return image.imageFlippedForRightToLeftLayoutDirection() } else { return image }// ImageView+Kingfisher.swift 343行view.centerXAnchor.constraint( equalTo: base.centerXAnchor, constant: newIndicator.centerOffset.x).isActive = true view.centerYAnchor.constraint( equalTo: base.centerYAnchor, constant: newIndicator.centerOffset.y).isActive = true// 替换如下: if #available(iOS 9.0, *) { view.centerXAnchor.constraint( equalTo: base.centerXAnchor, constant: newIndicator.centerOffset.x).isActive = true view.centerYAnchor.constraint( equalTo: base.centerYAnchor, constant: newIndicator.centerOffset.y).isActive = true } else { // Fallback on earlier versions NSLayoutConstraint.activate([ NSLayoutConstraint(item: self, attribute: .centerX, relatedBy: .equal, toItem: base, attribute: .centerX, multiplier: 1, constant: newIndicator.centerOffset.x), NSLayoutConstraint(item: self, attribute: .centerY, relatedBy: .equal, toItem: base, attribute: .centerY, multiplier: 1, constant: newIndicator.centerOffset.y), ]) }// Placeholder.swift 66行centerXAnchor.constraint(equalTo: imageView.centerXAnchor).isActive = true centerYAnchor.constraint(equalTo: imageView.centerYAnchor).isActive = true heightAnchor.constraint(equalTo: imageView.heightAnchor).isActive = true widthAnchor.constraint(equalTo: imageView.widthAnchor).isActive = true// 替换入下:if #available(iOS 9.0, *) { centerXAnchor.constraint(equalTo: imageView.centerXAnchor).isActive = true centerYAnchor.constraint(equalTo: imageView.centerYAnchor).isActive = true heightAnchor.constraint(equalTo: imageView.heightAnchor).isActive = true widthAnchor.constraint(equalTo: imageView.widthAnchor).isActive = true } else { // Fallback on earlier versions NSLayoutConstraint.activate([ NSLayoutConstraint(item: self, attribute: .centerX, relatedBy: .equal, toItem: imageView, attribute: .centerX, multiplier: 1, constant: 0), NSLayoutConstraint(item: self, attribute: .centerY, relatedBy: .equal, toItem: imageView, attribute: .centerY, multiplier: 1, constant: 0), NSLayoutConstraint(item: self, attribute: .height, relatedBy: .equal, toItem: imageView, attribute: .height, multiplier: 1, constant: 0), NSLayoutConstraint(item: self, attribute: .width, relatedBy: .equal, toItem: imageView, attribute: .width, multiplier: 1, constant: 0) ]) }// AnimatableImageView.swift 289行if displayLink.preferredFramesPerSecond == 0 { duration = displayLink.duration } else { // Some devices (like iPad Pro 10.5) will have a different FPS. duration = 1.0 / Double(displayLink.preferredFramesPerSecond) }// 替换如下: if #available(iOS 10.0, *) { if displayLink.preferredFramesPerSecond == 0 { duration = displayLink.duration } else { // Some devices (like iPad Pro 10.5) will have a different FPS. duration = 1.0 / Double(displayLink.preferredFramesPerSecond) } } else { duration = displayLink.duration }PS:而后运行就可,有问题欢迎留言。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Swfit5 Kingfisher 5.4.0 手动导入支持iOS10以下(iOS8,iOS9)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Swfit5 Kingfisher 5.4.0 手动导入支持iOS10以下(iOS8,iOS9)