Extension

作者: iOS分享 | 来源:发表于2019-07-17 16:18 被阅读0次

实例一

因为设置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

相比于系统提供的方法要简洁一些。

相关文章

网友评论

      本文标题:Extension

      本文链接:https://www.haomeiwen.com/subject/nobqlctx.html