您的位置:首页 > 移动开发 > Swift

ios开发中使用工厂模式创建ui控件(swift)

2016-06-14 15:51 435 查看
我们要创建一个工厂类,在这个工厂类里,可以用其生产一些常用控件,这样我们在写控件是,一些基本属性就不用写来写去了

import UIKit

class ViewFactory
{
   
class func getDefaultFrame() ->
CGRect
    {
       
let defaultFrame = CGRectMake(0,
0, 100,
30)
       
return defaultFrame
    }

    
   
class func createControl(type:String, title:[String], action:Selector,
sender:AnyObject) -> UIView
    {
       
switch(type)
        {

            
           
case "label":
               
return ViewFactory.createLabel(title[0])
           
case "button":
               
return ViewFactory.createButton(title[0], action: action, sender: sender
as! UIViewController)
           
case "text":
               
return ViewFactory.createTextField(title[0], action: action, sender: sender
as! UITextFieldDelegate)
           
case "segment":
               
return ViewFactory.createSegment(title, action: action, sender: sender
as! UIViewController)
           
default:
               
return ViewFactory.createLabel(title[0])
        }
    }
   
class func createButton(title:String, action:Selector, sender:UIViewController)->UIButton
    {
       
let button = UIButton(frame:ViewFactory.getDefaultFrame())

        
        button.backgroundColor =
UIColor.orangeColor()
        button.setTitle(title, forState:.Normal)
        button.titleLabel!.textColor =
UIColor.whiteColor()
        button.titleLabel!.font =
UIFont.systemFontOfSize(14<
4000
span>)

        
        button.addTarget(sender, action:action, forControlEvents:UIControlEvents.TouchUpInside)

        
       
return button
    }

    
   
class func createTextField(value:String, action:Selector, sender:UITextFieldDelegate)
-> UITextField
    {
       
let textField = UITextField(frame:ViewFactory.getDefaultFrame())
        textField.backgroundColor =
UIColor.clearColor()
        textField.textColor =
UIColor.blackColor()
        textField.text = value
        textField.borderStyle =
UITextBorderStyle.RoundedRect

        
        textField.adjustsFontSizeToFitWidth =
true
        textField.delegate = sender

        
       
return textField
    }

    
   
class func createSegment(items: [String], action:Selector, sender:UIViewController)
->UISegmentedControl
    {
       
let segment = UISegmentedControl(items:items)
        segment.frame =
ViewFactory.getDefaultFrame()
       
//segment.segmentedControlStyle = UISegmentedControlStyle.Bordered
        segment.momentary =
false
        segment.addTarget(sender, action:action, forControlEvents:UIControlEvents.ValueChanged)

        
       
return segment
    }

    
   
class func createLabel(title:String) ->
UILabel
    {
       
let label = UILabel()
        label.textColor =
UIColor.blackColor();
        label.backgroundColor =
UIColor.whiteColor();
        label.text = title;
        label.frame =
ViewFactory.getDefaultFrame()
        label.font = 
UIFont(name: "HelveticaNeue-Bold", size:
16)
       
return label
    }
}
在需要创建控件的文件里调用这个类来生产控件

 func setupControls()
    {
       
//创建文本输入框
       
txtNum = ViewFactory.createTextField(String(self.mainview.maxnumber)
            ,action:Selector("numChanged"), sender:self)

        
       
txtNum.frame =
CGRect(x:80,y:100,width:200,height:30)
       
txtNum.returnKeyType =
UIReturnKeyType.Done

        
       
self.view.addSubview(txtNum)

        
       
let labelNum = ViewFactory.createLabel("阈值:")
        labelNum.frame =
CGRect(x: 20, y:
100, width: 60, height:
30)
       
self.view.addSubview(labelNum)
       
//创建分段单选控件
       
segDimension = ViewFactory.createSegment(["3x3",
"4x4", "5x5"], action:"dimensionChanged:", sender:self)

        
       
segDimension.frame =
CGRect(x:80,y:
200,width: 200,height:
30)

        
       
self.view.addSubview(segDimension)
       
let dman = [3:0,4:1,5:2]
       
segDimension.selectedSegmentIndex = dman[mainview.dimension]!

        
       
let labelDm = ViewFactory.createLabel("维度:")
        labelDm.frame =
CGRect(x: 20, y:
200, width: 60, height:
30)
       
self.view.addSubview(labelDm)
    }

<
a7e6
/div>
在viewDidLoad中调用这个方法就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift ios开发