加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift语言工厂设计模式和抽象工厂设计模式

发布时间:2020-12-14 07:10:19 所属栏目:百科 来源:网络整理
导读:工厂设计模式封装UI控件 2.1扩展label。 1)cmd + n—新建一个Swift File—将导入的框架改为 import UIKit 2)写一个扩展extension—写一个类方法 class func 一定要有返回值 可以传参数 extension UILabel { class func labelWith(text: String ,fontSize: CG

工厂设计模式封装UI控件

2.1扩展label。

1)cmd + n—>新建一个Swift File—>将导入的框架改为 import UIKit

2)写一个扩展extension—>写一个类方法 class func 一定要有返回值 可以传参数

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

l.
text = text
l.
textColor = textColor

l.font = UIFont.systemFontOfSize(fontSize)

l.textAlignment = .Center
l.
numberOfLines = 0

//自适应大小
l.sizeToFit()
return l
}

}

再懒加载创建label时的代码:

private lazy var tipLabel: UILabel = UILabel.labelWith("",fontSize: 14,175);">UIColor.darkGrayColor())

2.2扩展Button。 cmd+shift+f “搜索"

import UIKit


UIButton {

//第一种按钮样式:背景视图+文字

func buttonWithTitle(backgroundImage: UIColor,175);">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.
return btn
}
第二种按钮样式:图片+背景视图
func buttonWithImage(imageName: String) -> setImage(UIImage(named: imageName),forState: .Normal)
btn.
UIImage(named: imageName + "_highlighted"),forState: .Highlighted)

btn.
UIImage(named: backgroundImageName),175);">UIImage(named: backgroundImageName + return btn

}

}

3.抽象工厂设计模式 类簇(NSNumber,NSString,NSArray,NSDictionary):NSNumber 类 就是 使用抽象工厂设计模式来实现。

import UIKit

抽象类

所有的UI控件,都是通过这个类来进行实例化
//NSNumber
就是 使用抽象工厂设计模式来实现

class UIFactory {

抽象方法

func labelFactory(text: labelWith(text,fontSize: fontSize,textColor: textColor)

return l
}

UIButton.buttonWithTitle(backgroundImage,title: title,titleColor: titleColor,fontSize: fontSize)

return btn
}
buttonWithImage(imageName,backgroundImageName: backgroundImageName)
return btn

}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读