实例一
因为设置UIColor的r、g、b值时我们都要 /255 所以我们对其进行扩展。
首先创建一个名为UIColor+Extension文件
import UIKit
extension UIColor{
//因为UIColor已经有默认的初始化方法,所以我们可以使用Cconvenience初始方法,
//使用Cconvenience初始方法的条件,一定要使用指定初始化方法
convenience init(r:CGFloat,g:CGFloat,b:CGFloat,alpha:CGFloat) {
//官方说这种displayP3方法性能更好。
self.init(displayP3Red:r/255.0,green:g/255.0,blue:b/255.0,alpha:alpha)
}
//添加一个类方法
class func globalBackgroundColor()->UIColor{
return UIColor(r: 248, g: 2479, b: 247)
}
}
使用:
view1.backgoundColor = UIColor.(r:247,b:248,g:249)
view2.backgoundColor = UIColor.globalBackgroundColor()
实例二
注册XIB 如果多的话会显得代码非常乱
所以这里进行扩展一下
首先创建名为UIVIew+Extension文件:
import UIKit
protocol RegisterCellOrNib{}
extension RegisterCellOrNib{
static var identifier:String{
return "\(self)"
}
static var nib:UINib?{
return UINib(nibName: "\(self)", bundle: nil)
}
}
在创建名为UITableView+Extension文件:
import UIKit
extension UITableView{
//注册Cll的方法
func mf_registerCell<T:UITableViewCell>(cell:T.Type) where T:RegisterCellOrNib{
if let nib = T.nib{
register(nib, forCellReuseIdentifier: T.identifier)
}else{
register(cell, forCellReuseIdentifier: T.identifier)
}
}
//从缓存池出队已经存在的cell
func mf_dequeueReusableCell<T:UITableViewCell>(indexPath:IndexPath)-> T where T:RegisterCellOrNib{
return dequeueReusableCell(withIdentifier: T.identifier, for: indexPath) as! T
}
}
再让TableViewCell遵守此协议
class MyOtherCell: UITableViewCell,RegisterCellOrNib {}
使用时只需要两段代码即可
tableView.mf_registerCell(cell: MyOtherCell.self)
let cell = tableView.mf_dequeueReusableCell(indexPath: indexPath) as MyOtherCell
相比于系统提供的方法要简洁一些。
网友评论