zoukankan      html  css  js  c++  java
  • 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.
        }
    }
  • 相关阅读:
    下载文件
    利用 js 获取地址栏参数
    子组件向父组件传值
    cordova 插件 调用iOS社交化分享(ShareSDK:微信QQ分享)
    cordova 企业应用打包Archive的时候报 "#import <Cordova file not found"
    企业应用打包的时候 修改ipa包的bundle identifier
    Mac下利用safari调试 Cordova的WebApp
    Mac下利用Cordova打包 iOS App以及出现的问题
    数据库设计流程
    Javascript 获取dom的宽度 随笔一
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4838391.html
Copyright © 2011-2022 走看看