• Swift


    1,下面是一个利用UIView来给页面上绘制灰色方块的例子,效果图如下:

      
    代码如下:
    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
    52
    import UIKit
     
    class ViewController: UIViewController {
     
        //游戏方格维度
        var dimension:Int = 4
     
        //数字格子的宽度
        var CGFloat = 50
        //格子与格子的间距
        var padding:CGFloat = 6
         
        //保存背景图数据
        var backgrounds:Array<UIView>!
         
        override func viewDidLoad()
        {
            super.viewDidLoad()
            self.backgrounds = Array<UIView>()
            //改成主视图背景白色背景
            self.view.backgroundColor = UIColor.whiteColor()
            setupGameMap()
        }
         
        func setupGameMap()
        {
            var x:CGFloat = 50
            var y:CGFloat = 150
             
            for i in 0..<dimension
            {
                println(i)
                y = 150
                for j in 0..<dimension
                {
                    //初始化视图
                    var background = UIView(frame:CGRectMake(x, y, width, width))
                    background.backgroundColor = UIColor.darkGrayColor()
                    self.view.addSubview(background)
                    //将视图保存起来,以备后用
                    backgrounds.append(background)
                    y += padding + width
                }
                x += padding+width
            }
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }


    2,进阶版 - 继承UIView实现自定义方块组件(有颜色和数字)

      
    方块组件:TileView.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
    import UIKit
    class TileView:UIView{
         
        //颜色映射表,不同的数字颜色不同
        let colorMap = [
            2:UIColor.redColor(),
            4:UIColor.orangeColor(),
            8:UIColor.yellowColor(),
            16: UIColor.greenColor(),
            32:UIColor.brownColor(),
            64:UIColor.blueColor(),
            128:UIColor.purpleColor(),
            256:UIColor.cyanColor(),
            512:UIColor.lightGrayColor(),
            1024:UIColor.magentaColor(),
            2048:UIColor.blackColor()
        ]
         
        //在设置值时,更新视图的背景和文字
        var value:Int = 0{
            didSet{
                backgroundColor = colorMap[value]
                numberLabel.text="(value)"
            }
        }
         
        var numberLabel:UILabel!
        //初始化视图
        init(pos:CGPoint, CGFloat, value:Int)
        {
            numberLabel = UILabel(frame:CGRectMake(0,0, width, width))
            numberLabel.textColor = UIColor.whiteColor()
            numberLabel.textAlignment = NSTextAlignment.Center
            numberLabel.minimumScaleFactor = 0.5
            numberLabel.font = UIFont(name:"微软雅黑", size:20)
            numberLabel.text = "(value)"
            super.init(frame:CGRectMake(pos.x, pos.y, width, width))
            addSubview(numberLabel)
            self.value = value
            backgroundColor = colorMap[value]
        }
         
        required init(coder aDecoder: NSCoder) {
            super.init(coder : aDecoder)
        }
    }


    使用:

    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
     
    class ViewController: UIViewController {
     
        //游戏方格维度
        var dimension:Int = 4
        //数字格子的宽度
        var CGFloat = 50
        //格子与格子的间距
        var padding:CGFloat = 6
        //保存背景图数据
        var backgrounds:Array<TileView>!
     
        override func viewDidLoad()
        {
            super.viewDidLoad()
            self.backgrounds = Array<TileView>()
            //改成主视图背景白色背景
            self.view.backgroundColor = UIColor.whiteColor()
            setupGameMap()
        }
         
        func setupGameMap()
        {
            var x:CGFloat = 50
            var y:CGFloat = 150
             
            for i in 0..<dimension
            {
                println(i)
                y = 150
                for j in 0..<dimension
                {
                    //随机2的1~11次方
                    var val:Int = 2<<Int(arc4random_uniform(10))
                    //初始化视图
                    var background = TileView(pos: CGPoint(x:x,y:y), self.width, value: val)
                    self.view.addSubview(background)
                    //将视图保存起来,以备后用
                    backgrounds.append(background)
                    y += padding + width
                }
                x += padding+width
            }
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }
  • 相关阅读:
    用Taro写一个微信小程序——版本升级
    matlab subplot 的边距(with tight margins)
    Nginx(Tengine) 解决 unknown directive "stream" 问题
    MinIO 分布式集群搭建
    Docker 及 Docker Compose 日常操作(团队培训材料)
    基于 AdoptOpenjdk 官方 Dockerfile 制作 jre8 镜像(修改字符集和时区)
    Syncthing 开源文件同步工具
    Harbor 2.2.0 搭建与使用
    Centos7 使用 chronyd 进行时钟同步
    Centos7 安装 Python3 及配置国内源、虚拟环境
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4838389.html
Copyright © 2020-2023  润新知