Releases: LinXunFeng/SwiftyFitsize
Releases · LinXunFeng/SwiftyFitsize
1.4.2
1.4.1
Support SPM
1.4.0
更新内容
开放参照尺寸参数
/// 适配方法
/// - Parameters:
/// - size: 大小
/// - fitType: 适配方式
/// - referenceWidth: 参照的宽度
/// - referenceHeight: 参照的高度
/// - isIPhoneXSeriesHeight: 参照的高度是否为iPhoneX系列
/// - reduceValue: 要额外减少的数值
/// - calcResultType: 计算结果类型(默认: 跟随全局配置)
/// - Returns: 适配后的数值
@objc public static func fit(
size: CGFloat,
fitType: SwiftyFitType,
referenceWidth: CGFloat = SwiftyFitsize.shared.referenceW,
referenceHeight: CGFloat = SwiftyFitsize.shared.referenceH,
isIPhoneXSeriesHeight: Bool = SwiftyFitsize.shared.isIPhoneXSeriesHeight,
reduceValue: CGFloat = 0,
calcResultType: SwiftyFitCalcResultType = .globalConfig
) -> CGFloat 1.3.0
更新内容
- 新增计算结果类型
SwiftyFitCalcResultType
/// 计算结果类型
@objc public enum SwiftyFitCalcResultType: Int {
/// 跟随全局配置
case globalConfig
/// 原始数据
case raw
/// 四舍五入
case round
/// 保留一位小数(根据第二位小数进行四舍五入)
case oneDecimalPlace
}使用
全局配置
- 不配置则默认为
.raw .globalConfig取的就是这里配置的类型- 如果在该处还是设置为
.globalConfig,则内部会将其重置为.raw
SwiftyFitsize.reference(width: 375, calcResultType: .oneDecimalPlace) // 全局配置计算结果为保留一位小数以下在不指定
calcResultType参数的情况下,默认都是跟随全局配置
单独指定 calcResultType
SwiftyFitsize.fit(
size: 35, // 36
fitType: .flexibleWidth,
reduceValue: 10 * 2,
calcResultType: .raw // .round .oneDecimalPlace
)PropertyWrapper 方式
// calcResultType: .raw .round .oneDecimalPlace
@WrappedSwiftyFitsize(reduceValue: Metric.tableViewLeftRightMargin * 2, calcResultType: .raw)
static var width: CGFloat = 375示例数据
-
第一列为适配前的数值
-
其它列为适配后根据不同的
SwiftyFitCalcResultType计算得到的值
| 原值 | raw | round | oneDecimalPlace |
|---|---|---|---|
| 35 | 36.478873239436616 | 36.0 | 36.5 |
| 36 | 37.52112676056338 | 38.0 | 37.5 |
1.2.1
1.2.0
更新内容
- 新增移除指定尺寸后再进行适配的功能
- 开放
Config配置,方便获取屏幕/设备的相关信息
使用
Swift
1、定义适配规则
struct Fit {
@WrappedSwiftyFitsize(reduceValue: Metric.tableViewLeftRightMargin * 2)
static var width: CGFloat = 375
}2、使用
struct Metric {
static let tableViewLeftRightMargin: CGFloat = 10
static let tableViewTopMargin: CGFloat = 10
static let tableViewHeight: CGFloat = Fit.$width(30) // 去掉左右边距后进行适配的值
static let rowViewTopMargin: CGFloat = 5
static let rowViewHeight: CGFloat = tableViewHeight - rowViewTopMargin * 2
static let rowLeftViewWidth: CGFloat = Fit.$width(177.5)
static let rowCenterViewWidth: CGFloat = Fit.$width(100.5)
static let rowRightViewWidth: CGFloat = Fit.$width(77)
}print("默认适配的宽度: \(Fit.width)")
// 移除指定尺寸后的适配,调用方式:
// 以下都是以适配 tableView 为例,移除 tableView 左右两侧固定的边距,以剩余的宽度来做适配
// 方式一:先赋值再取值
// 将 20 进行适配
Fit.width = 20
print("适配后的值 -- \(Fit.width)")
// 方式二:使用 $ 将 width 当方法用,传入待适配的值
// 将 30 进行适配
let aVal = Fit.$width(30)
print("适配后的值 aVal -- \(aVal)")
// 方式三:调用 SwiftyFitsize.fit 方法
let bVal = SwiftyFitsize.fit(
size: 40,
fitType: .flexibleWidth,
reduceValue: Metric.tableViewLeftRightMargin * 2
)
print("适配后的值 bVal -- \(bVal)")Objective-C
1、定义宏
#define kFitWidth(value) \
[SwiftyFitsize fitWithSize:value fitType:SwiftyFitTypeFlexibleWidth reduceValue:20]2、使用
CGFloat fitWidth = kFitWidth(40);
NSLog(@"fitWidth -- %f", fitWidth);1.1.0
新增高度适配功能
~ 对比宽度,当设备为 iPad 时,适配后的 value 会再乘上 iPadFitMultiple
≈ 对比宽度,强制适配,不论是 iPhone 还是 iPad 都不会乘上 iPadFitMultiple
∣ 对比高度,对应 ~ ,整屏高度
∥ 对比高度,对应 ≈ ,整屏高度
∣=新增高度适配功能对比高度,对应 ∣ ,安全区域内的高度
∥= 对比高度,对应 ∥ ,安全区域内的高度
∣- 对比高度,对应 ∣ ,除去刘海区域的安全区域内的高度
∥- 对比高度,对应 ∥ ,除去刘海区域的安全区域内的高度
1.0.1
1.0.0
Swift 5
0.4.1
调整podspec文件,修复OC集成后无.h文件的问题