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

Swift - 生成各种控件的工厂类(包含标签,按钮,输入框等)

发布时间:2020-12-14 07:16:27 所属栏目:百科 来源:网络整理
导读:在iOS开发中,页面里有时会大量的用到一些控件,如果要一个个单独创建再设置样式的话就显得很麻烦。我们可以创建一个生成各种控件的工厂类,这样在需要的时候调用下就可以了。 下面以一个自定义的工厂类为例,其中提供了文本标签,按钮,文本输入框,分段单
在iOS开发中,页面里有时会大量的用到一些控件,如果要一个个单独创建再设置样式的话就显得很麻烦。我们可以创建一个生成各种控件的工厂类,这样在需要的时候调用下就可以了。
下面以一个自定义的工厂类为例,其中提供了文本标签,按钮,文本输入框,分段单选控件的生成,效果图如下:
工厂类:ViewFactory.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import UIKit
class ViewFactory
{
/**
* 控件默认尺寸
*/
class func getDefaultFrame() -> CGRect
{
let defaultFrame = CGRectMake (0,100,30)
return defaultFrame
}
createControl(type: String ,title:[ ],action: Selector AnyObject ) -> UIView
{
switch (type)
{
case "label" :
return ViewFactory .createLabel(title[0])
"button" :
.createButton(title[0],action: action,
sender: sender as UIViewController )
"text" :
.createTextField(title[0],
UITextFieldDelegate )
"segment" :
.createSegment(title,sender:
sender )
default :
.createLabel(title[0])
}
}
/**
* 创建按钮控件
*/
createButton(title: )-> UIButton
{
var button = UIButton (frame: .getDefaultFrame())
button.backgroundColor = UIColor .orangeColor()
button.setTitle(title,forState:. Normal )
button.titleLabel!.textColor = .whiteColor()
button.titleLabel!.font = UIFont .systemFontOfSize(14)
button.addTarget(sender,action:action,forControlEvents: UIControlEvents . TouchUpInside )
button
}
/**
* 创建文本输入框控件
*/
createTextField(value: )
-> UITextField
{
textField = UITextField .getDefaultFrame())
textField.backgroundColor = .clearColor()
textField.textColor = .blackColor()
textField.text = value
textField.borderStyle = UITextBorderStyle RoundedRect
textField.adjustsFontSizeToFitWidth = true
textField.delegate = sender
textField
}
/**
* 创建分段单选控件
*/
createSegment(items: [ )
UISegmentedControl
{
segment = UISegmentedControl (items:items)
segment.frame = .getDefaultFrame()
//segment.segmentedControlStyle = UISegmentedControlStyle.Bordered
segment.momentary = false
segment.addTarget(sender,147)!important">ValueChanged )
segment
}
/**
* 创建文本标签控件
*/
createLabel(title: UILabel
{
label = UILabel ()
label.textColor = .blackColor();
label.backgroundColor = .whiteColor();
label.text = title;
label.frame = .getDefaultFrame()
label.font = (name: "HelveticaNeue-Bold" label
}
}

工厂类的使用:
49
ViewController : {
txtNum: !
segDimension: !
btn: !
override viewDidLoad() {
super .viewDidLoad()
// Do any additional setup after loading the view,typically from a nib.
setupControls()
}
setupControls()
{
//创建文本标签
labelNum = .createLabel( "阈值:" )
labelNum.frame = CGRect (x: 20,y: 100,width: 60,height: 30)
self .view.addSubview(labelNum)
labelDm = "维度:" labelDm.frame = .view.addSubview(labelDm)
//创建文本输入框
txtNum = .createTextField( "" ( "numChanged" ),sender: )
txtNum.frame = (x:80,y:100,width:200,height:30)
txtNum.returnKeyType = UIReturnKeyType Done
.view.addSubview(txtNum)
//创建分段单选控件
segDimension = .createSegment([ "3x3" "4x4" "5x5" "dimensionChanged:" sender: )
segDimension.frame = .view.addSubview(segDimension)
segDimension.selectedSegmentIndex = 1
//创建按钮控件
btn = .createButton( "确定" nil )
btn.frame.origin = CGPointMake (80,300)
.view.addSubview(btn)
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_655.html

(编辑:李大同)

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