美文网首页
调用工厂类

调用工厂类

作者: 焉逢12 | 来源:发表于2017-03-16 18:09 被阅读0次
import Foundation
import UIKit

class ViewFactory
{
    /**
     * 控件默认尺寸
     */
    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.createLabel(title: title[0])
            case "button":
                return ViewFactory.createButton(title: title[0], action: action,
                                                sender: sender as! UIViewController)
            case "text":
                return ViewFactory.createTextField(value: title[0], action: action,
                                                   sender: sender as! UITextFieldDelegate)
            case "segment":
                return ViewFactory.createSegment(items: title, action: action, sender:
                    sender as! UIViewController)
            default:
                return ViewFactory.createLabel(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 createTextField(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 = 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.isMomentary = false
        segment.addTarget(sender, action:action, for:.valueChanged)
        return segment
    }
    
    /**
     * 创建文本标签控件
     */
    class func createLabel(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: "HelveticaNeue-Bold", size: 16)
        return label
    }
}
import UIKit

class ViewController: UIViewController,UITextFieldDelegate {

    var txtNum:UITextField!
    var segDimension:UISegmentedControl!
    var btn:UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        makeFactor()
    }

    func makeFactor()
    {
        //创建文本标签
        let labelNum = ViewFactory.createLabel(title: "阈值:")
        labelNum.frame = CGRect(x: 20, y: 100, width: 60, height: 30)
        self.view.addSubview(labelNum)
        
        let labelDm = ViewFactory.createLabel(title: "维度:")
        labelDm.frame = CGRect(x: 20, y: 200, width: 60, height: 30)
        self.view.addSubview(labelDm)
        
        //创建文本输入框
        txtNum = ViewFactory.createTextField(value: "", action:#selector(ViewController.TextField), sender:self)
        txtNum.frame = CGRect(x:80,y:100,width:200,height:30)
        txtNum.returnKeyType = UIReturnKeyType.done
        self.view.addSubview(txtNum)
        
        //创建分段单选控件
        segDimension = ViewFactory.createSegment(items: ["3x3", "4x4", "5x5"],
                                                 action:#selector(ViewController.dimensionChanged(_:)), sender:self)
        segDimension.frame = CGRect(x:80,y: 200,width: 200,height: 30)
        self.view.addSubview(segDimension)
        segDimension.selectedSegmentIndex = 1
        
        //创建按钮控件
        btn = ViewFactory.createButton(title: "确定", action: #selector(btnClick(_ :)), sender: self)
        btn.frame.origin = CGPoint(x: 80, y: 300)
        self.view.addSubview(btn)
    }
    func TextField()  {
        print("textfield")
    }
    func dimensionChanged(_ seg:UISegmentedControl) {
        print("segDimension")
    }
    func btnClick(_ btn:UIButton)  {
        print("btn")
    }
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        //收起键盘
        txtNum.resignFirstResponder()
        //打印出文本框中的值
        print(txtNum.text as Any)
        return true
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

相关文章

  • Spring详解(三)Spring的IOC容器

    IOC容器实例化对象的几种方式: 调用无参构造 调用有参构造 调用其他对象构造 调用工厂类静态方法 调用工厂类非静...

  • 调用工厂类

  • 简单工厂模式

    RuleConfigParserFactory:负责创建所有parser对象的工厂类,工厂类直接被外界调用,创建所...

  • 二、Working with Objects

    类工厂方法调用 创建类对象语法 函数调用 控制台输出Hello Objective-C!, My name is ...

  • 三、Spring工厂类

    3.1、spring工厂结构图 3.2、BeanFactory:老版本的工厂类 BeanFactory:调用get...

  • 抽象工厂+反射

    抽象产品类 具体产品类 抽象工厂类 具体工厂类 Client客户端调用 注:注释部分为对比代码、

  • 简单工厂模式

    简单工厂模式,也叫工厂模式,属于创建型模式,将实例化对象的逻辑交由工厂类实现,使用方只需要调用工厂类对应方法,根据...

  • Java8 接口新实现方式

    定义接口默认实现 实现类1 实现类2 工厂方法 静态方法调用

  • python设计模式 - 工厂模式之简单工厂

    python 环境 工厂模式简介 在面向对象中,“工厂”表示一个负责创建其他类型对象的类。客户端通过传参调用工厂类...

  • 静态工厂方法

    一、静态工厂方法是什么? 常规情况下,一个类需要调用另一个类的变量或方法时,需要先获得被调用类的实例,这时被调用类...

网友评论

      本文标题:调用工厂类

      本文链接:https://www.haomeiwen.com/subject/fkijnttx.html