【iOS】“绝地打靶”图形界面实现及适配
杜致远

今天完成了王寒老师让不懂编程的人爱上iPhone开发(2018秋iOS12+Swift4.2+Xcode10版)#10、#11、#12、#13、#14、#15以及#16开了一点头。

今日收获

今天可以说是收获颇多的一天了,前几天大体上按教程走也都没什么bug,但今天还是遇到了许多小状况(又感受到了做课设时被bug支配的恐惧😱)

具体内容记录如下,也可以留作以后备忘
昨天的效果
昨天最后效果

今天所学:

  1. 让玩家按了提示窗中的确定后再开始新一轮
    实现方法:原来的handler是nil,这样在点击后弹出的对话框会直接消失,在handler中传入你希望接下来调用的动作,即可在点击“嗷呜~”后触发该动作
1
2
let action = UIAlertAction(title: "嗷呜~", style: .default, handler: {_ in self.startNewRound()})

  1. 必包:{_ in self.startNewRound()}

  2. 隐藏状态栏
    在BullsEye -> General -> Deployment Info中勾选hide status bar即可

  3. 添加各种背景图片
    添加好了背景图片和各个按钮的背景图片

滑动条的背景图片也修改了

  1. 添加新页面

    1. 代码部分 file-> new -> file -> cocoa touch class -> xxxViewController -> creat
    2. 视图部分:mainboard中添加view controller
      1. 在Iinterface builder中点击identity inspector,class选择我们新增的xxxViewController,就可以把视图和代码关联起来
  2. 一个viewController关联另一个viewController: segue
    按住control键从第一个页面连线到第二个页面,选择Modal即可

  3. 直接创造一个segue 到另一个页面似乎会完全刷新另一个页面使其恢复初始状态,所以要保证从另一个页面返回时,原页面保持之前的状态的话,应该添加新的IBAction,而不是从返回键创造一个segue到原页面

1
2
3
@IBAction func close(){
dismiss(animated: true, completion: nil)
}
  1. 加载本地html文件
    本地html文件

  2. 在线加载网页
    加载网页这部分代码只能说能懂了,但以后具体的灵活用法还需要专门学习。
    在线加载网页

1
2
3
4
5
6
7
8
9
10
11
override func viewDidLoad() {
super.viewDidLoad()

//加载本地html文件BullsEye
if let url = Bundle.main.url(forResource: "BullsEye", withExtension: "html") {
//在线加载网页
//if let url = URL.init(string : "https://www.jianshu.com/u/e68f6f037b27"){
let request = URLRequest(url: url)
webView.load(request)
}
}
  1. Auto Layout自动布局
    这部分主要是添加align和constrain,以便在不同大小的手机上也能在合适的位置显示

  2. button的背景可以直接在attribute inspector中修改
    我开始竟然是添加了一个图片和button位置重叠来实现的🤦‍♀️,然后自动布局的时候就异常麻烦了,后来搜索一下才知道button可以直接修改image和background

  3. 删除约束(constrain)直接选中该约束按delete即可

  4. iPhoneX系列刘海机型的适配问题
    只要在background的size inspector中双击代表四个边对齐的constrain,进入详细信息,把safe area改为superview即可,如果不想让刘海挡住内容可以选择safe area,这个小游戏四周没有什么会被遮挡的内容,直接让四个边都贴紧superview即可。
    未适配时周围有白边
    成功适配后,可以满屏显示

碎碎念

非常神奇!写代码真的能够使人快乐。

今天东方之猪由于没有什么学习的劲头申请休假去打游戏了,我就只能一个人去图书馆学习,一个人还是比较懒散一点,所以本来就打算下午出去逛一下看看展。正好清华艺博有两个感兴趣的展,就想着去一趟顺便去找学长聊一聊,也问一问复试怎么准备。

但可能由于自己的性格原因,虽然奋力鼓起勇气,字都在对话框打好了,还是不敢发送QAQ,感觉鸭梨山大,然后都不知道还该不该去艺博了,纠结半天。然后就情不自禁的走到了图书馆打开电脑继续学iOS了,自己知道这其实是一种逃避,但没想到有一天编程竟然能成我的一个逃避的港湾,非常神奇的感觉。

第一次体会到,靠编程来缓解压力的神奇感觉。因为代码的世界确实就是自己的世界,不像与人打交道那么复杂,只要你沉浸其中,这个世界就完全由你打造。

但还是要直面现实的,尊重自己的性格不要去焦虑,但还是很有必要掌握一些与人交往的方法,明天约朗的朋友吃饭,请教一下与人沟通的方法好了,然后新的一年好好开始~

明天应该能结束这个iOS教程1啦,期待王寒老师出教程2!

然后最近两天应该会写年终总结与新年规划啦~