30天学30个Swift小程序

序言

随着 WWDC2019 Swift5.0的发布,基于ABI的稳定,Swift 好像要起飞了。之前一直在默默关注着 Swift,大多数声音是 Swift 一年一个样,现在不是学的时候,不过另一个很奇怪的现象是大部分公司都开始使用 Swift,所以 Swift 的重要性对于 iOS 的重要性不言而喻。像我这样抱着 OC 不放的人也大有人在,积极拥抱变化才是王道。

今天看到网上关于一篇文章 《100 Days of Swift》,国内已经有很多人写过类似的文章了,30天学习编写30个Swift小程序自学 iOS - 三十天三十个 Swift 项目
,正好可以按照这个思路来学一下 Swift。

可能你会质疑有没有必要重复写一个文章呢?我觉得是有必要的,一方面是为了监督自己学下去,另一方面也可以总结自己的心得和知识点收获。以后我每天会更新一个例子,学习的例子主要参考以上文章,讲一讲在这个例子里面学到了哪些 Swift 知识点,希望自己可以坚持下去。

Day1 - Timer Counter

Timer Counter

知识点总结:
1.属性观察者 willSet didSet
2.var let 关键字的区别和使用
3.@objc 修饰符使用
4.Swift 中Timer使用

Day2 - Iconfont

image

知识点总结:
1.访问限制关键字 private、fileprivate、internal、public、open

private 只能在当前文件的当前模块的作用域使用  
fileprivate 只能在当前文件内使用  
internal 是默认访问级别,所有没有单独列出的都是这个权限  
public 可以在外部文件访问,如果只需要访问就用它  
open 可以在外部文件访问,如果需要继承和重写就用它    

2.单例的使用,在 class 外面用 static let 修饰即可
3.重写父类方法,类方法和实例方法的使用
4.强制解包和去解包 ! ?

隐式解包: 就是在定义可选类型值的时候,加上 !进行强制解包  
显示解包: 在使用的时候加 !进行解包  
去解包: 用的时候加上 ?可定义 optional 进行解包  

5.空合运算符 ??,本质上是对三目运算符的一种简化
6.convenience 和 required 关键字使用

Day3 - Find My Position

image

知识点总结:
1.使用 CoreLocation 获取用户当前的地理位置
2.使用 URLRequest URLSession 调用腾讯地图open api 获取具体位置信息
3.JSONSerialization序列化JSON字符串

Day4 - Pull To Refresh

image

知识点总结:
1.tableView 使用
2.Array的使用
3.UIRefreshControl 的使用

Day5 - Play Local Video

image

知识点总结:
1.复习tablView和tablViewCell在Swift中的用法
2.导入使用AVKit,熟悉AVAsset、AVPlayerItem、AVPlayer、AVPlayerViewController的使用
3.extension为当前类创建扩展,可以用来分隔功能,实现相关协议

Day6 - Simple PhotoBrowser

image

知识点总结:
1.自定义一个view,继承自UIView,添加imageView到scrollView上,监听zommForView方法,实现手势缩放图片
2.designated initializers方法,关键点为三点

primary initializers:designated initializers 是一个类的主初始化器,理论上来说是一个类初始化的必经之路(注:不同的初始化路径可能调用不同的 designated initializers
fully initializes all properties:这点很明确,必须在 designated initializers 中完成所有成员属性的初始化;
calls an appropriate superclass initializer:需要调用合适的父类初始化器完成初始化,不能随意调用。

3.通过scrollViewDidZoom代理方法设置缩小时图片居中
4.添加tapGesture,通过双击缩放图片

Day7 - Color Gradient

image

知识点总结:
一天的时间是24小时,渐变色分为12段,每天温度最高是12点,然后温度逐渐下降,图层的渐变效果根据当前的温度来设定,温度根据当前的时间来设定,通过手势滑动可以设置当前的时间。
1.使用CAGradientLayer实现图层的渐变效果
2.给UIColor添加extension方便生成颜色
3.通过重写touchesBegan、touchesMoved方法来监听手势变化

Day8 - Carousel Effect

image

知识点总结:
1.照片横屏滑动的旋转木马效果,复习使用 UICollectionView 来实现,cell的标题view上添加UIEffectView 实现毛玻璃效果
2.swift 中使用lazy关键字实现延时加载,lazy还可以配合map filter 这类接受闭包运行的方法一起运行
3.cell的layer设置设置圆角并且ClipToBounds会触发离屏渲染,大量cell的时候要避免这样使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,831评论 2 9
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,300评论 3 25
  • 《相约星期二》,一本好书,由台湾的著名话剧导演安士杰,在《朗读者》上朗读它的篇章,言语朴实而直击心扉,令人心灵震撼...
    嘉温阅读 620评论 0 4
  • 我就是不明白我为什么要累死累活地一个人搬着那么多行李来到这个我不喜欢的城市,再来到这个沉闷抑郁的破地方。 希望明天...
    沈多意的亲妈阅读 797评论 1 1
  • 茶叶这玩意相当的神奇。说句难听的,他就是树叶子。但是因为具有独特的功效,备受消费者喜爱。尤其现在,不少人对抽烟喝酒...
    微言微评阅读 195评论 0 0