XLSwiftKit 3.2.0

XLSwiftKit 3.2.0

TestsTested
LangLanguage SwiftSwift
许可证 MIT
Released上次发布2020年11月
SPM支持 SPM

Diego ErnstMathias ClaassenSantiago FernandezCecilia Pirotto 维护。



XLSwiftKit

Build status Platform iOS Carthage compatible CocoaPods compatible License: MIT

Xmartlabs SRL 提供。

简介

XLSwiftKit 是我们内部使用的一组辅助函数和扩展。它不断更新,添加新代码片段。请随意使用或贡献。您可以在这里看到辅助函数和扩展的列表。如果您添加了新函数,请保持该列表更新。

使用方法

import XLSwiftKit
// your code using XLSwiftKit

要求

  • iOS 9.2+
  • Xcode 9.0+
  • Swift 4

参与项目

  • 如果您想要贡献代码,请随意提交拉取请求
  • 如果您遇到了错误或需要帮助,在提交问题之前请先检查历史问题常见问题解答以及在 StackOverflow 上的相关讨论。

在贡献代码前,请查阅贡献指南文档获取更多信息。

如果您在自己的应用中使用XLSwiftKit,我们非常乐意了解您的使用情况!请在Twitter上联系我们。

示例

按照以下3个步骤运行示例项目:克隆XLSwiftKit仓库,打开XLSwiftKit工作空间,并运行Example项目。

安装

CocoaPods

CocoaPods是Cocoa项目的依赖管理器。

要安装XLSwiftKit,只需在您的Podfile中添加以下行:

pod 'XLSwiftKit', '~> 3.2.0'

Carthage

Carthage是一个简单的、分布式的Cocoa依赖管理器。

要安装XLSwiftKit,只需在您的Cartfile中添加以下行:

github "xmartlabs/XLSwiftKit" ~> 3.2.0

实现的功能

这是一个在此分页中实现的帮助函数和扩展列表。

扩展

NSData

  • func toJSON() -> AnyObject?:将NSData对象序列化为JSON表示形式

NSDate

  • func isOver18Years() -> Bool:判断日期是否在18年前
  • func monthName() -> String:以MMMM格式返回日期的月份
  • func year() -> String:以yyyy格式返回日期的年份
  • func day() -> String:以dd格式返回日期的天数

UIApplication

  • class func topViewController(base: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController?:返回考虑基本根视图控制器层次结构中的最顶级视图控制器。
  • static func changeRootViewController(rootViewController: UIViewController, animated: Bool = true, from: UIViewController? = nil, completion: ((Bool) -> Void)? = nil):改变应用程序主窗口的根视图控制器
  • static func changeRootViewControllerAfterDismiss(from: UIViewController? = nil, to: UIViewController, completion: ((Bool) -> Void)? = nil):与前一个功能相同,但在更改根视图控制器之前关闭当前视图控制器
  • static func makePhoneCall(phoneNumber: String) -> Bool:使用phoneNumber参数创建NSURL并在可能的情况下打开URL。
  • var bundleIdentifier: String
  • var buildVersion: String
  • var appVersion: String
  • var bundleName: String

UINavigationBar

  • func setTransparent(transparent: Bool): 设置导航栏是否透明
  • func shake(duration: CFTimeInterval = 0.3): 对视图执行摇动动画
  • func spin(duration: CFTimeInterval, rotations: CGFloat, repeatCount: Float): 在z轴周围旋转视图
  • static public func verticalStackView(views: [UIView], alignLeading: Bool = true, alignTrailing: Bool = true, frame: CGRect? = nil, width: CGFloat = UIScreen.mainScreen().bounds.width) -> UIView: 返回一个视图,将传入的视图作为参数按垂直堆叠(垂直放置一个视图接一个视图)。被认为是iOS 8替代UIStackViews的方案

UIViewController

  • func showError(title: String, message: String? = nil): 显示包含错误标题和消息的UIAlertController警报

Double 和 Int

  • func currencyString() -> String?: 从Int或Double返回格式化的货币字符串。使用的货币格式化程序定义在Constants.Formatters.currencyFormatter

String

  • func isValidAsEmail() -> Bool: 验证字符串是否为有效的电子邮件格式
  • func isValidAsPhone() -> Bool: 验证字符串是否为有效的电话号码
  • func isNumberString() -> Bool: 验证字符串是否仅由数字或'-'符号组成
  • func findFirstNumberInString() -> String?: 如果找到,返回字符串中的第一个数字
  • func renderedHeightWithFont(font: UIFont, width: CGFloat) -> CGFloat: 返回给定宽度及字体大小下的文本所需的高度。与UIFont的heightForString扩展相同
  • func getFirstAndLastName() -> (String,String)?: 从字符串中解析出名字和姓氏。最后空格作为分隔符来区分这两个值。
  • 通过将 String 类型符合 ParametrizedString 协议并指定一个参数格式,如 "{i}"
    • func parametrize(parameters: CustomStringConvertible...) -> String:用 parameters 的第 i 个元素替换 "{i}" 子串。例如:"Hey {0}! It's been {1} years!".parametrize("Arnold", 3) 将返回 "Hey Arnold! It's been 3 years!"
    • parametrize(withDictionary dictionary: [Int: CustomStringConvertible]) -> String:与上面的行为相同,但以字典的形式指定参数。

UIImage

  • init(color: UIColor, size: CGSize = CGSize(width: 1, height: 1))
  • init(view: UIView)
  • init(image: UIImage, scaledToSize: CGSize)
  • class func imageWithColor(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) -> UIImage
  • class func imageWithView(view: UIView) -> UIImage
  • class func imageWithImage(image: UIImage, scaledToSize size: CGSize) -> UIImage:返回一个缩放到所需大小的图像
  • func imageScaledToSize(size: CGSize) -> UIImage:与前面相同
  • func saveToCameraRoll(completion: ((successed: Bool) -> Void)? = nil):将图像保存到照片库

UITableView

  • func setFooterWithSpacing(view: UIView):向 tableView 添加一个全覆盖屏幕的脚注。
  • func reloadDataAnimated(duration: NSTimeInterval = 0.4, completion: (() -> ())?):使用交叉溶解过渡执行 reloadData 调用。

Dictionary

  • mutating func merge(dict: [Key: Value]):合并两个具有相同关键和值的字典

UIColor

  • init(red: Int, green: Int, blue: Int):从介于 0 和 255 之间的 RGB 值创建颜色
  • init(netHex: Int):从十六进制字符串创建颜色

UIDevice

  • func maxScreenLength() -> CGFloat: 返回当前设备的最大屏幕长度

以下辅助函数根据设备的maxScreenLength返回设备是否为特定类型

  • func iPhone4() -> Bool
  • func iPhone5() -> Bool
  • func iPhone6() -> Bool
  • func iPhone6Plus() -> Bool

其他辅助函数

  • fontSizeForDevice(size: CGFloat, q6: CGFloat = 0.94, q5: CGFloat = 0.86, q4: CGFloat = 0.80) -> CGFloat: 返回针对每个设备的推荐字体大小(仅iPhone)。

UIFont

  • func heightForString(string: NSString, width: CGFloat) -> CGFloat: 返回给定宽度和字体大小所需的高度。与字符串的renderedHeightWithFont扩展相同。

辅助函数

约束

  • func suggestedVerticalConstraint(value: CGFloat, q6: CGFloat = 0.9, q5: CGFloat = 0.77, q4: CGFloat = 0.65) -> CGFloat: 根据当前设备缩放垂直约束常量。仅适用于iPhone应用程序。所有系数都有合理的默认值用于垂直约束。
  • func suggestedHorizontalConstraint(value: CGFloat, q6: CGFloat = 0.9, q5: CGFloat = 0.77, q4: CGFloat = 0.77) -> CGFloat: 根据当前设备缩放水平约束常量。仅适用于iPhone应用程序。所有系数都有合理的默认值用于水平约束。

外观

这是一个包含函数的public struct

  • static func removeBackImageIndicatorFromNavigationBar(): 移除导航条返回指示器图像

GCDHelper

  • 静态变量 let mainQueue: DispatchQueue:返回主队列
  • 静态变量 let backgroundQueue: DispatchQueue:返回一个后台队列
  • 静态函数 func delay(_ delay: Double, block: @escaping () -> ()): 在指定的延迟后执行一个块
  • 静态函数 func runOnMainThread(_ block: @escaping () -> ()): 在主线程上执行一个块
  • 静态函数 func runOnBackgroundThread(_ block: @escaping () -> ()): 在后台队列上执行一个块
  • 静态函数 func synced(_ lock: AnyObject, closure: () -> ()): 锁定一个对象

Box

Box 是一个包装器:例如,用于将任何结构体包裹在类中,以便可以在需要 AnyObject 的地方使用。

Views

  • RoundedViewRoundedImageViewRoundedButton 是具有圆角外观的 UIViewUIImageViewUIButton 的子类。
  • GradientView 通过 colorsdirection 属性指定的数组颜色和方向渲染渐变。它在空间中均匀地分布颜色。
  • OwnerView 用于包装 xib 视图,以便在 storyboards 中重用它们以及在代码中实例化它们。
    • 用法
      • 创建 OwnerView 的子类
      • 将其设置为 xib 的文件所有者
      • 如果您有任何,请将 xib 的视图输出连接到您的子类
      • 覆盖 func viewForContent() -> UIView? 以提供 xib 的视图。
      • 覆盖 func setup() 以初始化视图。您的 xib 视图将可通过 contentView 属性访问。

其他

  • 公开函数 func JSONStringify(value: AnyObject, prettyPrinted: Bool = true) -> String:将 JSON 对象转换为可打印的字符串。

作者

变更日志

可在《CHANGELOG.md》文件中找到。