Ruler 3.0.0

Ruler 3.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2018年9月
SPM支持SPM

nixzhu维护。



Ruler 3.0.0

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 文件。