使用UIView给页面添加4×4方格

自定义view

import UIKit

class GPLView: UIView {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */
    //颜色映射表,不同的数字颜色不同
    let colorMap = [
        2:UIColor.red,
        4:UIColor.orange,
        8:UIColor.yellow,
        16: UIColor.green,
        32:UIColor.brown,
        64:UIColor.blue,
        128:UIColor.purple,
        256:UIColor.cyan,
        512:UIColor.lightGray,
        1024:UIColor.magenta,
        2048:UIColor.black
    ]
    
    //在设置值时,更新视图的背景和文字
    var value:Int = 0{
        didSet{
            backgroundColor = colorMap[value]
            numberLabel.text="\(value)"
        }
    }

    var numberLabel:UILabel!
    
    //声明一个自定义初始化方法
    init(pos:CGPoint, width:CGFloat, value:Int) {
        numberLabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: width))
        numberLabel.textColor = UIColor.white
        numberLabel.textAlignment = .center
        numberLabel.minimumScaleFactor = 0.5
        numberLabel.font = UIFont(name:"微软雅黑", size:20)
        numberLabel.text = "\(value)"
        super.init(frame:CGRect(x:pos.x , y: pos.y, width: width, height: width))
        addSubview(numberLabel)
        self.value = value
        backgroundColor = colorMap[value]
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}
import UIKit

class ViewController: UIViewController {
    //游戏方格维度
    var dimension:Int = 4
    //数字格子的宽度
    var width:CGFloat = 50
    //格子与格子的间距
    var padding:CGFloat = 6
    //保存背景图数据
    //var backgrounds:Array<GPLView>!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //self.backgrounds = Array<GPLView>()
        //改成主视图背景白色背景
        self.view.backgroundColor = UIColor.white
        setupGameMap()
    }
    func setupGameMap()
    {
        var x:CGFloat = 50
        var y:CGFloat = 150
        
        for i in 0..<dimension
        {
            print(i)
            y = 150
            for j in 0..<dimension
            {
                //随机2的1~11次方
                var val:Int = 2<<Int(arc4random_uniform(10))
                //初始化视图
                var background = GPLView(pos: CGPoint(x:x,y:y), width: 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.
    }


}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容