控件工厂类,简而言之就是,减少代码的复用率,只在哪里用,然后在哪里调:

代码如下:
import UIKit
class ViewFactory: UIView,UITextFieldDelegate {
//默认控件的尺寸
class func getDefaultFrame( ) -> CGRect
{
let defaultFrame = CGRect(x:0,y:0,width:100,height:30)
return defaultFrame
}
//类方法
class func createControl(type:String,title:[String],action:Selector,sender:AnyObject) -> UIView
{
switch type {
case "label":
return ViewFactory.creatLabel(title: title[0])
case "button":
return ViewFactory.createButton(title: title[0], action: action, sender: sender as! UIViewController)
case "text":
return ViewFactory.creatTextField(value: title[0], action: action, sender: sender as! UIViewController as UIViewController as! UITextFieldDelegate)
case "segment":
return ViewFactory.creatSegment(items: [title[0]], action: action, sender: sender as! UIViewController)
default:
return ViewFactory.creatLabel(title: title[0])
}
}
//创建按钮控件
class func createButton(title:String, action:Selector, sender:UIViewController)
-> UIButton {
let button = UIButton(frame:ViewFactory.getDefaultFrame())
button.backgroundColor = UIColor.orange
button.setTitle(title, for:.normal)
button.titleLabel!.textColor = UIColor.white
button.titleLabel!.font = UIFont.systemFont(ofSize: 14)
button.addTarget(sender, action:action, for:.touchUpInside)
return button
}
//创建文本输入框控件
class func creatTextField(value:String,action:Selector,sender:UITextFieldDelegate) -> UITextField
{
let textField = UITextField(frame:ViewFactory.getDefaultFrame())
textField.backgroundColor = UIColor.clear
textField.textColor = UIColor.black
textField.text = value
textField.borderStyle = .roundedRect
textField.adjustsFontSizeToFitWidth = true
textField.delegate = sender
return textField
}
//创建分段单选组件
class func creatSegment(items:[String],action:Selector,sender:UIViewController) -> UISegmentedControl
{
let segment = UISegmentedControl(items:items)
segment.frame = ViewFactory.getDefaultFrame()
segment.isMomentary = false
segment.addTarget(self, action: action, for: .valueChanged)
return segment
}
//创建文本标签控件
class func creatLabel(title:String) -> UILabel
{
let label = UILabel()
label.textColor = UIColor.black
label.backgroundColor = UIColor.white
label.text = title
label.frame = ViewFactory.getDefaultFrame()
label.font = UIFont(name:"微软雅黑",size:16)
return label
}
}
调用:
func initVIewFactory()
{
//创建文本标签
let labelNum = ViewFactory.creatLabel(title: "阈值")
labelNum.frame = CGRect(x:20,y:100,width:60,height:30)
self.view.addSubview(labelNum)
let labelDm = ViewFactory.creatLabel(title: "维度")
labelDm.frame = CGRect(x:20,y:200,width:60,height:30)
self.view.addSubview(labelDm)
//创建文本输入框
textNum = ViewFactory.creatTextField(value: "", action:#selector(factoryAction), sender: self as UITextFieldDelegate)
textNum.frame = CGRect(x:80,y:100,width:200,height:30)
textNum.returnKeyType = .done
self.view.addSubview(textNum)
let textNumSecond = ViewFactory.creatTextField(value: "", action: #selector(factoryActionSecond), sender: self as UITextFieldDelegate)
textNumSecond.frame = CGRect(x:80,y:200,width:200,height:30)
textNum.returnKeyType = .done
self.view.addSubview(textNumSecond)
//创建分段单选控件
segmentC = ViewFactory.creatSegment(items: ["3*3","4*4","5*5"], action: #selector(segmentAction), sender: self)
segmentC.frame = CGRect(x:80,y:200,width:200,height:30)
self.view.addSubview(segmentC)
segmentC.selectedSegmentIndex = 0
//创建按钮控件
factorybtn = ViewFactory.createButton(title: "确定", action: #selector(factoryClick), sender: self)
factorybtn.frame.origin = CGPoint(x:80,y:300)
self.view.addSubview(factorybtn)
}
func factoryAction()
{
}
func factoryActionSecond()
{
}
func segmentAction()
{
}
func factoryClick()
{
print("我点击了")
}
效果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# swift
# 控件工厂类
# Swift在控件中添加点击手势的方法
# 输入框
# 单选
# 微软
# 只在
# 大家多多
# 复用
# button
# creatLabel
# label
# text
# UIViewController
# createButton
# sender
# Selector
# action
# case
# switch
# AnyObject
# creatTextField
# orange
相关文章:
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何快速查询域名建站关键信息?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何选择网络建站服务器?高效建站必看指南
如何通过NAT技术实现内网高效建站?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
建站VPS配置与SEO优化指南:关键词排名提升策略
制作公司内部网站有哪些,内网如何建网站?
北京网站制作网页,网站升级改版需要多久?
定制建站策划方案_专业建站与网站建设方案一站式指南
宝塔面板如何快速创建新站点?
电商网站制作公司有哪些,1688网是什么意思?
建站之星如何实现PC+手机+微信网站五合一建站?
建站之星导航配置指南:自助建站与SEO优化全解析
如何用免费手机建站系统零基础打造专业网站?
网站制作公司排行榜,四大门户网站排名?
网站制作新手教程,新手建设一个网站需要注意些什么?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
实例解析Array和String方法
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
如何确认建站备案号应放置的具体位置?
建站DNS解析失败?如何正确配置域名服务器?
公司网站设计制作厂家,怎么创建自己的一个网站?
如何快速建站并高效导出源代码?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何快速启动建站代理加盟业务?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何用花生壳三步快速搭建专属网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
清除minerd进程的简单方法
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
电商网站制作价格怎么算,网上拍卖流程以及规则?
宝塔建站后网页无法访问如何解决?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何用VPS主机快速搭建个人网站?
如何通过主机屋免费建站教程十分钟搭建网站?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何选择高效便捷的WAP商城建站系统?
如何挑选高效建站主机与优质域名?
建站之星安装步骤有哪些常见问题?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星如何配置系统实现高效建站?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何在云主机上快速搭建多站点网站?
浅谈Javascript中的Label语句
魔毅自助建站系统:模板定制与SEO优化一键生成指南
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
*请认真填写需求信息,我们会在24小时内与您取得联系。