Swift語言工廠設計模式和抽象工廠設計模式

工廠設計模式封裝UI控件設計模式

2.1擴展label。框架

1)cmd + n—>新建一個Swift File—>將導入的框架改成 import UIKit字體

2)寫一個擴展extension—>寫一個類方法  class func  必定要有返回值  能夠傳參數spa

extension UILabel {
   
class func labelWith(text: String, fontSize: CGFloat, textColor: UIColor)-> UILabel {
      
let l = UILabel()
     
        l.
text = text
        l.
textColor = textColor設計

        l.font = UIFont.systemFontOfSize(fontSize)orm

        l.textAlignment = .Center
        l.
numberOfLines = 0
      
       
//自適應大小
        l.sizeToFit()
       
return l
    }
圖片

}ip

再懶加載建立label時的代碼:cmd

 private lazy var tipLabel: UILabel = UILabel.labelWith("", fontSize: 14, textColor: UIColor.darkGrayColor())it

2.2擴展Button。  cmd+shift+f  「搜索"

import UIKit


extension UIButton {

  //第一種按鈕樣式:背景視圖+文字

    class func buttonWithTitle(backgroundImage: String,title: String, titleColor: UIColor,fontSize: CGFloat) -> UIButton {
   
let btn = UIButton()
       
        btn.
setBackgroundImage(UIImage(named: backgroundImage), forState:.Normal)

        btn.setTitle(title, forState: .Normal)

        btn.setTitleColor(titleColor, forState: .Normal)
       
//設置按鈕中文字的字體。
        btn.titleLabel?.font = UIFont.systemFontOfSize(fontSize)
       
        btn.
sizeToFit()
       
return btn
    }
//第二種按鈕樣式:圖片+背景視圖
    class func buttonWithImage(imageName: String,backgroundImageName: String) -> UIButton {
   
let btn = UIButton()
   
    btn.
setImage(UIImage(named: imageName), forState: .Normal)
    btn.
setImage(UIImage(named: imageName + "_highlighted"), forState: .Highlighted)
   
    btn.
setBackgroundImage(UIImage(named: backgroundImageName), forState: .Normal)
    btn.
setBackgroundImage(UIImage(named: backgroundImageName + "_highlighted"), forState: .Highlighted)
   
   
return btn

   }

}

3.抽象工廠設計模式  類簇(NSNumber,NSString, NSArray,NSDictionary):NSNumber 類 就是 使用抽象工廠設計模式來實現。

import UIKit

//抽象類

//全部的UI控件,都是經過這個類來進行實例化
//NSNumber
就是 使用抽象工廠設計模式來實現

class UIFactory {

     //抽象方法

    class func labelFactory(text: String, fontSize: CGFloat, textColor: UIColor)-> UILabel {
       
let l = UILabel.labelWith(text, fontSize: fontSize, textColor: textColor)
       
       
return l
    }

     //第一種按鈕樣式:背景視圖+文字

    class func buttonWithTitle(backgroundImage: String,title: String, titleColor: UIColor,fontSize: CGFloat) -> UIButton {
       
let btn = UIButton.buttonWithTitle(backgroundImage, title: title, titleColor: titleColor, fontSize: fontSize)
       
       
return btn
    }
   
//第二種按鈕樣式:圖片+背景視圖
    class func buttonWithImage(imageName: String,backgroundImageName: String) -> UIButton {
       
let btn = UIButton.buttonWithImage(imageName, backgroundImageName: backgroundImageName)
     
return btn

   }

}

相關文章
相關標籤/搜索