不用加班是有原因的,互相借鉴省事(偷懒)的小技巧,欢迎留言。
因为Swift的函数在.swift文件中是全局可见的,所以只需要创建一个工具文件存放所有extension就很方便管理一些小函数和拓展。
1.获取数组的第二个节点或者第三个节点
extension Array {
var second: Element? {
get {
return self.count >= 1 ? self[1] : nil
}
}
var third: Element? {
get {
return self.count >= 2 ? self[2] : nil
}
}
}
2.在XIB中设置tintColor需要手动更新tintColor才会显示设置的值
extension UIImageView {
open override func awakeFromNib() {
super.awakeFromNib()
tintColorDidChange()
}
}
3.截图屏幕(把任意View变成Image)
extension UIImage {
//生成图片
convenience init(view: UIView) {
UIGraphicsBeginImageContext(view.frame.size)
view.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.init(cgImage: (image?.cgImage)!)
}
}
extension UIView {
//生成图片
func toUIImage() -> UIImage {
UIGraphicsBeginImageContext(self.frame.size)
self.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return UIImage.init(cgImage: (image?.cgImage)!)
}
}
4.简化控制器跳转
//返回上一层
extension UIViewController {
func back() {
if navigationController != nil {
if navigationController?.viewControllers.count ?? 0 <= 1 {
dismiss(animated: true, completion: nil)
} else {
pop()
}
} else {
dismiss(animated: true, completion: nil)
}
}
func pop() {
if navigationController != nil {
navigationController?.popViewController(animated: true)
}
}
func push(_ viewController: UIViewController?) {
if viewController