XLSwiftKit
由 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
RoundedView
、RoundedImageView
和RoundedButton
是具有圆角外观的UIView
、UIImageView
和UIButton
的子类。GradientView
通过colors
和direction
属性指定的数组颜色和方向渲染渐变。它在空间中均匀地分布颜色。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》文件中找到。