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 UIKitclass 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 UIKitclass 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 UIKitclass 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. }} |