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