IOS开发 - 每日一个Swift小程序

swift学习日记——每日一个小程序

名称:30DaysofSwift

工具: Xcode 10.1, Swift 4.2, UIKit

思路来源:samvluAllen_朝辉nimomeng

用例方面:主要参考nimomeng的case,也参考了Sam Lu的40个小项目,也参考了Allen_朝辉的项目

代码方面:前两个项目学习了Storyboard,然而实际上多人协作的项目中我们尽可能少用Storyboard,因为很容易出现冲突问题。况且从学习的角度,storyboard很难说清楚操作步骤是什么。因此以后的项目都尽量手写。

开源项目:暂未整理完成

Project 3 : 计时器 Change Custom Font

4

学习内容:

具体实现

  • SnapKit:项目的自动布局
  • Timer 计时器:fire()与invalidate()
  • guard语句:guard 判断合理条件,保证判断条件简约。详见 guard详解

Project 2 : 改变字体 Change Custom Font

Untitled

学习内容:

  • 获取字体属性:UIFont.familyNames可以存储为数组,可以直接输出、或通过索引获取
  • 随机获取字体:随机数arc4random()格式为UInt32,需转为Int,再对数组长度取余。获得范围随机数
  • 字体设置:words.font=UIFont(name: “字体名称”, size: 20)
  • 按钮边框设置:圆角cornerRadius,颜色borderColor,该颜色需要CGColor,因此需要将UIColor转为CGColor

源码:

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
//
// ViewController.swift
// ChangeCustomFont
//
// Created by iris on 2019/2/25.
// Copyright © 2019 iris. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var words: UILabel!
@IBOutlet weak var change: UIButton!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 按钮的边框粗细、圆角、颜色
// 注:颜色需要CGColor,因此需要将UIColor转为CGColor
change.layer.borderWidth = 1;
change.layer.cornerRadius = 8;
change.layer.borderColor = UIColor.blue.cgColor

}

// 字体改变:根据随机数,随机获取系统字体的第i个
@IBAction func change(_ sender: Any) {
// 1.存储字体名称y为数组
let familyNames_arr = UIFont.familyNames
let count:Int = familyNames_arr.count
// 2.获取随机数
// 平常的随机数:0 ~ X,UInt32格式,需要转为Int
let random1:Int = Int(arc4random())
// 限制长度的随机数,取余 :0 ~ X
let random2:Int = random1 % count
// 3.设置字体为第 随机数 的字体
print(familyNames_arr[random2])
words.font=UIFont(name: familyNames_arr[random2], size: 20)
}
}

Project 1 : 加法计算器 Calculation of Add

3

学习内容:

具体实现

  • IOS的UI布局:使用Storyboard和其辅助视图添加部件,且为部件定义,加上动作
  • 值的转化:Option获取 -> String -> Float计算 -> String展示