前言:其实很早就开始接触swift,当时只是觉得这个语法怎么有点奇特,也让代码简单了些。 但是由于各种各样的原因,好久没接触了,当初学得基础语法也抛在云端了。 今天决定拾起swift,从40个小tips开始(很早以前下载的demo集,没有作者了,只能说声感谢了前辈) --这个系列文章不是教你写demo的,只是我写demo中觉得自己不熟悉的知识点保存下来,方便以后查找(这是我风格了,太健忘了)
// MARK:- 01 让代码穿上衣服
#不知道刚从OC过渡到Swift的朋友,第一次看见一长串的Swift代码时,是不是觉得每个方法就像没穿衣服一样,赤裸裸的,也什么逻辑
我们可以这样做—比如tableView的代理和数据源方法,我们可以单独写个分类出来
// MARK:- tableView -- dataSource
extension ViewController {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}
//返回高度
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
}
// MARK:- 02 打印拼接
#这里只说一种情况—我学习Swift的策略是,了解基础语法后,就模仿简单demo的实现,有不懂的就直接百度或者是Google
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//打印得注意了
print("点击了\(indexPath.row)行cell")
}
// MARK:- 03 tableViewCell的创建
#代码创建,并且没有注册cell的情况下,用
dequeueReusableCell(withIdentifier identifier: String) -> UITableViewCell?
# 如果已经注册了,或者用的xib,就使用
dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) -> UITableViewCell
// MARK:- 04 空合运算符
#简介:
空合运算符(a ?? b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b.这个运算符有两个条件:
表达式a必须是Optional类型
默认值b的类型必须要和a存储值的类型保持一致
#运用:
我们创建cell可以直接这样写和下面是一样的效果
let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier) ?? UITableViewCell(style: .subtitle, reuseIdentifier: reuseIdentifier)
/*****************************************************/
var cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier)
if cell == nil {
cell = UITableViewCell(style: .subtitle, reuseIdentifier: reuseIdentifier)
}
// MARK:- 05 导入字体的步骤
1.下载ttf文件,加入项目中
2.在info.plist中,添加一个字段:Fonts provided by application—将字体名字添加到item里面
3.然后就可以通过名字使用了
// MARK:- 06 颜色设置快捷键
button.backgroundColor = #colorLiteral(red: 0.8549019694, green: 0.250980407, blue: 0.4784313738, alpha: 1)
#这上面这个是从代码中直接复制过来的,设置颜色时直接
button.backgroundColor = colcor 按回车有彩蛋哦
// MARK:- 07 guard守卫语法
#在Tips-03小项目中,我们从本地加载一个文件
let path = Bundle.main.path(forResource: "emoji zone", ofType: "mp4”)
#我们加载了这个文件,可以进行一个判断,我们是否将文件名写正确呢,先看以前的做法 if 判断
if path == nil {
print("没有该文件!")
return
}
#看着也很简单是吧,为什么还要用guard呢(这个自己查查吧)
guard path != nil else {
print("没有该文件!")
return
}
#判断path为不为空,不为空,执行guard下面的代码,为空,就执行else中的代码
// MARK:- 08 用系统字体为你的应用带来改变
- 看下面这张图形中的图片中的字体是不是感觉比较炫酷
- 其实这只是设置了一下系统自带字体而已
videoTitle.font = UIFont(name: "Zapfino", size: 24)
贴个网站,iOS 所有自带字体
iOS字体
// MARK:- 09 遍历数组enumerated()
#类似于OC Block块遍历
let arr = ["tmac","kobe","kg"]
for (index,value) in arr.enumerated() {
print(index)
print(value)
}