zoukankan      html  css  js  c++  java
  • swift--控件工厂类的实现

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

    代码如下:

    import UIKit
    
    class ViewFactory: UIView,UITextFieldDelegate {
    
        //默认控件的尺寸
        class func getDefaultFrame( ) -> CGRect
        {
            let defaultFrame = CGRect(x:0,y:0,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,60,height:30)
            self.view.addSubview(labelNum)
            
            let labelDm = ViewFactory.creatLabel(title: "维度")
            labelDm.frame = CGRect(x:20,y:200,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,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,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,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("我点击了")
        }

    效果如下:

  • 相关阅读:
    Linux systemtap定位系统IO资源使用情况(ok)
    DISK 100% BUSY,谁造成的?(ok)
    容易被误读的IOSTAT
    利用BLKTRACE分析IO性能
    iowait 过高问题的查找及解决linux
    top后台执行显示:top: failed tty get 错误
    Nginx解读内置非默认模块 ngx_http_stub_status_module
    Nginx健康检查模块
    平滑升级你的Nginx
    Practice telephone techniques
  • 原文地址:https://www.cnblogs.com/hero11223/p/7610081.html
Copyright © 2011-2022 走看看