Ruler
在某些情况下,我们需要区分不同的设备以设置UI,但自适应布局无法做到这一点。因此,我们有了Ruler。
要求
Swift 4, iOS 8.0
(Swift 3, 使用1.0.1版本)
示例
如果我们只考虑iPhone的宽度,iPhone 5与iPhone 4s具有相同的宽度,iPhone 6的宽度更大,iPhone 6 Plus的宽度甚至大于iPhone 6,而iPhone X的宽度是最大的。只有四种宽度。
但是,如果考虑iPhone的全屏尺寸,就有五种型号,因为iPhone 5的高度与iPhone 4s不同。
如果我们的应用是通用型,则需要考虑iPad,有三种型号(以像素为单位)。
所以我们需要考虑以下的五个情况
enum Ruler<T> {
case iPhoneHorizontal(T, T, T)
case iPhoneVertical(T, T, T, T, T)
case iPad(T, T)
case universalHorizontal(T, T, T, T, T)
case universalVertical(T, T, T, T, T, T, T)
}
在真实世界中(得益于泛型,Ruler可以针对不同尺寸的iOS设备匹配任何东西)
import Ruler
// size, off course
let width = Ruler.iPhoneHorizontal(10, 20, 30).value
let height = Ruler.iPhoneVertical(5, 10, 20, 30, 40).value
// or color
colorView.backgroundColor = Ruler.universalVertical(UIColor.black, UIColor.red, UIColor.blue, UIColor.green, UIColor.yellow, UIColor.purple, UIColor.cyan).value
// even closures
typealias Greeting = () -> Void
let greeting: Greeting = Ruler.universalVertical(
{ print("Hello!") },
{ print("Hi!") },
{ print("How are you!") },
{ print("How do you do!") },
{ print("好久不见!") },
{ print("你好!") },
{ print("很高兴见到你!") }).value
greeting()
// ...
特别优惠
检测此设备是否为iPhone X
if ScreenModel.isPhoneX {
print("It's an iPhone X. You're rich!")
}
安装
您可以随意将 Ruler.swift
拖动到您的 iOS 项目中。但建议使用 Carthage(或 CocoaPods)。
Carthage
github "nixzhu/Ruler"
CocoaPods
pod 'Ruler'
联系方式
NIX @nixzhu
许可证
Ruler 可根据 MIT 许可证获取。关于更多信息,请查看 LICENSE 文件。