一、简介
SwiftExtension 是一个优化 Swift 开发过程的开源框架,它包含了很多常用方法的拓展,能够节约我们开发时间,提高开发效率。同时,SwiftExtension 的功能模块化,方便我们按需引入。
二、常用方法
1. UIView+
UIView 拓展了很多对界面开发非常常用的方法,比如对 UIView 进行圆角、设置边框、添加阴影、设置渐变等。这些方法都是非常常用的,能够省去我们自己编写方法的时间。
extension UIView {
// 对UIView进行圆角设置
func roundCorners(_ corners: UIRectCorner, radius: CGFloat) {
let maskPath = UIBezierPath(roundedRect: bounds,
byRoundingCorners: corners,
cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = bounds
maskLayer.path = maskPath.cgPath
layer.mask = maskLayer
}
// 在UIView上添加渐变效果
func addGradientLayer(colors: [UIColor],
startPoint: CGPoint = CGPoint(x: 0, y: 0),
endPoint: CGPoint = CGPoint(x: 1, y: 1)) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = bounds
gradientLayer.colors = colors.map { $0.cgColor }
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = endPoint
layer.insertSublayer(gradientLayer, at: 0)
}
}
2. UIImage+
UIImage 拓展了图片压缩、裁剪、旋转等功能,这些对于图片处理非常常见的方法,也借助 SwiftExtension 使得处理过程更加简单。
extension UIImage {
// 将图片压缩至指定大小
func compressed(maxSize: Int) -> UIImage? {
guard let imageData = jpegData(compressionQuality: 1.0) else { return nil }
if imageData.count UIImage {
guard let cgImage = cgImage else { return self }
let height = CGFloat(cgImage.height)
let width = CGFloat(cgImage.width)
if height == width { return self }
let rect: CGRect
if height > width {
let yOffset = (height - width) / 2
rect = CGRect(x: 0, y: yOffset, width: width, height: width)
} else {
let xOffset = (width - height) / 2
rect = CGRect(x: xOffset, y: 0, width: height, height: height)
}
guard let croppedCGImage = cgImage.cropping(to: rect) else { return self }
return UIImage(cgImage: croppedCGImage)
}
}
3. String+
String 拓展了很多字符串的处理方法,比如字符串是否为空、取中间字符、是否匹配正则表达式等。这些方法也是非常常用的。
extension String {
// 判断字符串是否为空
var isNotEmpty: Bool {
return !isEmpty
}
// 获取两个字符串中间的子串
func substring(with prefix: String, suffix: String) -> String? {
guard let prefixRange = range(of: prefix), let suffixRange = range(of: suffix) else {
return nil
}
let range = prefixRange.upperBound .. Bool {
let regular = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let matchCount = regular?.numberOfMatches(in: self, options: [], range: NSRange(location: 0, length: count)) ?? 0
return matchCount > 0
}
}
三、代码示例
下面是一段使用 SwiftExtension 中拓展的 UIView 方法来设置一个 UIView 圆角和渐变效果的代码:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
view.backgroundColor = .white
view.roundCorners([.bottomLeft, .bottomRight], radius: 10)
view.addGradientLayer(colors: [.red, .yellow])
这段代码简明扼要,通过 SwiftExtension 中的方法,我们可以轻松地为一个 UIView 设置圆角和渐变效果,而不需要手写多余的代码。
四、总结
SwiftExtension 作为一个优化 Swift 开发过程的工具,提供了很多常用的方法拓展,能够让我们在编写 Swift 代码时更加轻松和高效。通过使用 SwiftExtension,我们可以节约时间,降低出错概率,并且提高代码的可读性和可维护性。
原创文章,作者:ASRAK,如若转载,请注明出处:https://www.506064.com/n/334146.html