• Swift


    在iOS开发中,如果创建一个自定义的组件通常可以通过继承UIView来实现。下面以一个记分牌组件为例,演示了组件的创建和使用,以及枚举、协议等相关知识的学习。
    效果图如下:
      
    组件代码:ScoreView.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
    import UIKit
     
    enum ScoreType{
        case Common  //普通分数面板
        case Best    //最高分面板
    }
     
    protocol ScoreViewProtocol{
         
        func changeScore(value s:Int)
    }
     
    class ScoreView:UIView, ScoreViewProtocol
    {
        var label:UILabel!
         
        let defaultFrame = CGRectMake(0,0,100,30)
        var stype:String//显示”最高分“还是”分数“
        var score:Int = 0{
            didSet{
                //分数变化,标签内容也要变化
                label.text = "(stype):(score)"
            }
        }
         
        //传入分数面板的类型,用于控制标签的显示
        init(stype:ScoreType)
        {
            label = UILabel(frame:defaultFrame)
            label.textAlignment = NSTextAlignment.Center
             
            super.init(frame:defaultFrame)
             
            self.stype = (stype == ScoreType.Common ? "分数":"最高分")
             
            backgroundColor = UIColor.orangeColor()
            label.font = UIFont(name:"微软雅黑", size:16)
            label.textColor = UIColor.whiteColor()
            self.addSubview(label)
        }
         
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }
         
        //实现协议中的方法
        func changeScore(value s:Int)
        {
            score = s
        }
    }

    组件使用:
    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
    import UIKit
     
    class ViewController: UIViewController {
         
        var score:ScoreView!
        var bestscore:ScoreView!
         
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            setupScoreLabels();
        }
         
        func setupScoreLabels()
        {
            score = ScoreView(stype: ScoreType.Common)
            score.frame.origin = CGPointMake(50, 80)
            score.changeScore(value: 0)
            self.view.addSubview(score)
             
             
            bestscore = ScoreView(stype: ScoreType.Best)
            bestscore.frame.origin.x = 170
            bestscore.frame.origin.y = 80
            bestscore.changeScore(value: 99)
            self.view.addSubview(bestscore)
             
        }
         
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }
  • 相关阅读:
    生成排列与生成子集
    赛后总结AtCoder Beginner Contest 090(Beginner)
    树状数组笔记
    论怎么记住tarjan的板子
    tarjan缩点-受欢迎的牛-笔记
    tarjan模板(%%%hzwer)-2.0
    tarjan模板(%%%hzwer)
    匈牙利算法学习笔记
    最短路-Car的旅行路线
    数据结构 笔记1 搜索树
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4838391.html
Copyright © 2020-2023  润新知