swift从零开始--2048游戏显示并更新视图内容
2020-05-07 本文已影响0人
迷夏湖
1. 前言
刚开始学习swift,有点无从下手的感觉,如何将自己想看的东西显示在手机上?如何改变显示的内容?带着这两个最初的疑问,打开XCode,尝试一把。
2. 显示视图
由于以后想结合SpriteKit来做些项目,所以建项目时选择了SpriteKit。默认会生成一些文件,GameViewController: UIViewController是视图控制层,可以在里面添加视图,响应事件。
新建了一个swift文件MainScene继承UIView,添加了一个UILabel的成员变量用于显示文字,init中做了一些初始化操作,指定label的大小,位置,颜色,text等信息,然后将label加入到view中。
class MainScene : UIView {
var label : UILabel!
init(x: CGFloat, y: CGFloat, value: Int) {
let wid:CGFloat = 40
label = UILabel(frame: CGRect(x: 0, y: 0, width: wid, height: wid))
label.textAlignment = .center
label.minimumScaleFactor = 0.5
label.font = UIFont(name: "HelveticaNeue-Bold", size: 15)
super.init(frame: CGRect(x: x, y: y, width: wid, height: wid))
self.addSubview(label)
label.text = "test"
}
在ViewController中增加一个MainScene的成员变量,viewDidLoad方法中加入到其view中。这样就能显示这个label信息了。
class GameViewController: UIViewController {
var mainScene = MainScene(x: 50, y: 50, value: 8)
var count = 1;
override func viewDidLoad() {
super.viewDidLoad()
//view.backgroundColor = UIColor.black
view.addSubview(mainScene)
}
3 更新视图内容
想通过事件触发label的文字更新,在Controller中增加点击事件的响应,只需要在点击事件中将将label.text设置为count自增值, 就会点击时随着变化啦。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
NSLog("test start")
count = count + 1
mainScene.label.text = "\(count)"
}
4 END
知道如何显示并更新后,后面就可以加入更丰富的view,以及响应不同的事件达到自己想要的效果啦。