用SwiftGen管理UIImage等的String-based接口

问题现状

平时我们使用UIImage,UIFont,UIColor会遇到很多String-based的接口方法,比如常用的UIImage:

1
let testImage = UIImage(named: "test")

对于上面的代码,如果我们把 test 拼写错了,Xcode 并不会给出提示,只有当我们运行的时候才会收到报错,这样维护起来是有一定成本的。

Read More

Comments

Swift 实现启动屏动画

Github: SplashAnimate

准备工作:

首先我们需要确定作为宣传的图片的宽高比,这个一般是与 UI 确定的。一般启动屏展示会有上下两部分,上面是宣传图片,下面是 App 的 Logo。

实现基本思路:

在 LaunchScreen 结束后,在 AppDelegate 中将 rootViewController 指向展示广告用的 AdViewController,在AdViewController 中设置一段时间后自己销毁,并提供回调方法在 AppDelegate 中将 rootViewController 指向 App 真正的首页。

Read More

Comments

记一次失败的 Swift 元组数组实践

想建立一个元组的数组,来简单存放构建 TabViewController 的信息首先我的做法是

1
2
3
4
5
6
7
let homeTab = (vc: VYHomeViewController(), title: "Home", image: "home_gray", selectedImage: "home_blue")
let infoTab = (vc: VYInformationViewController(), title: "Info", image: "home_gray", selectedImage: "home_blue")
let marketTab = (vc: VYMarketViewController(), title: "Market", image: "home_gray", selectedImage: "home_blue")
let userTab = (vc: VYUserCenterViewController(), title: "Me", image: "home_gray", selectedImage: "home_blue")
// 下面报错:Heterogeneous collection literal could only be inferred to '[Any]'; add explicit type annotation if this is intentional
let data = [homeTab, infoTab, marketTab, userTab]

但是会报错,Xcode 的修改提示是后面添加 as [Any]

1
let data = [selfSelectedTab, infoTab, marketTab, userTab] as [Any]

但是这样做已经不是原来的做一个元组数组的初衷了。无法在遍历数组的时候使用命名元组来获取信息

Read More

Comments

自定义 UISegmentedControl 样式

系统的 UISegmentedControl 是个挺方便的控件,这里来讲讲在 Swift3 下自定义 UISegmentedControl 的样式,包括修改底色,边框颜色等等。

要了解 UISegmentedControl 各个部分的组成,可以在官方的文档中找到 UISegmentedControl 文档 。着重注意这个图:
image.png
上面这幅图明确的列出了 UISegmentedControl 各个部分所控制的方法。下面就开始自定义吧。

Read More

Comments

HSStockChart介绍

HSStockChart 是一个绘制股票分时图、K 线图的库。支持流畅的回弹拖动,长按十字线,捏合放大缩小等功能,主要使用了 CAShapeLayer 来绘图,相比使用 Core Graphics 和重写 drawRect 的方法更高效,占用内存更小。
GitHub 地址:HSStockChart

image.png

Read More

Comments