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文件的问题