Dynamikos
Swift 中 UI 一致性的解决方案
没有 Dynamikos
使用 Dynamikos
什么是 Dynamikos
这是一个简单而实用的工具,适合那些总是承诺通过编程方式创建 UI/UX 的 iOS 开发者。
当您编写 UI/UX 代码时,您是否有过感觉您的设计只有在大屏幕设备上看起来很好,但在小或中等屏幕上却缺失一些东西的经历?
那是因为在传统方式下,UI 元素在不同的设备上并不总是在预期的位置。
现在 Dynamikos 帮助您在不同显示尺寸的设备上创建一致外观的 UI。
动态分支理论
Dynamikos将iPhone设备分为三类,并为每一类设定特定的百分比。
Max (100%): iPhone 6+,6s+,7+,8+,X,Xs,Xs Max,Xr,11,11 pro,11 pro max
Mid (90%): iPhone 6,6s,7,8,SE second gen
Min (80%): iPhone 4,4s,5,5s,5c,SE first gen
现在有一个唯一规则,每次设置UI元素(位置、大小、边距)或为标签设置字体大小时,我们使用基于类别百分比的调整值,而不是使用确切值。
例如,假设我们有一个按钮,其大小为(高度:40 ,宽度:60)。使用dynamikos之后,调整值将变为:
Max (100%): (height: 40, width: 60)
Mid (90%): (height: 36, width: 54)
Min (80%): (height: 32, width: 48)
集成
CocoaPods (iOS 8+)
您可以使用CocoaPods通过将其添加到您的Podfile
中安装Dynamikos
。
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
pod 'Dynamikos', :git => 'https://github.com/siam-biswas/Dynamikos.git'
end
手动 (iOS 8+)
要手动在项目中使用此库,您可以
- 对于项目,只需将Dynamikos.swift拖到项目树中
- 对于工作空间,包含整个Dynamikos.xcodeproj
使用
魔法被封装在一个函数中
constantValue.dynamic()
默认情况下,我们假设您使用的是最大值设置的常数。如果想要设置不同的类型
constantValue.dynamic(type: .max)
constantValue.dynamic(type: .mid)
constantValue.dynamic(type: .min)
基于框架布局
anyView.frame = CGRect(x: 0, y: 20.dynamic(), width: 100.dynamic(), height: 100.dynamic())
使用自动布局约束
anyView.leftAnchor.constraint(equalTo: superView.leftAnchor, constant: 20.dynamic()).isActive = true
anyView.rightAnchor.constraint(equalTo: superView.rightAnchor, constant: -20.dynamic()).isActive = true
anyView.topAnchor.constraint(equalTo: superView.topAnchor, constant: 10.dynamic()).isActive = true
anyView.bottomAnchor.constraint(equalTo: superView.bottomAnchor, constant: -20.dynamic()).isActive = true
使用图层属性
anyView.layer.cornerRadius = 8.dynamic()
anyView.layer.borderWidth = 5.dynamic()
使用字体大小
anyLabel.font = UIFont.boldSystemFont(ofSize: 16.dynamic())
anyLabel.font = UIFont.systemFont(ofSize: 14.dynamic())
根据您的需求配置类别百分比
DynamikosConfig.set(max: 100, mid: 90, min: 80)