LinXunFeng SwiftyFitsize Versions Save

📱 Swifty screen adaptation solution (Support Objective-C and Swift)

1.4.2

1 year ago

更新内容

UI_USER_INTERFACE_IDIOM() 替换为 UIDevice.current.userInterfaceIdiom,以解决 Xcode 13.3 Archive 失败的问题 #22

1.4.1

1 year ago

Support SPM

1.4.0

2 years ago

更新内容

开放参照尺寸参数

/// 适配方法
/// - 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

2 years ago

更新内容

  • 新增计算结果类型 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

2 years ago

#21 修复 SceneDelegate 获取 Window 导致崩溃的 bug

1.2.0

2 years ago

更新内容

  • 新增移除指定尺寸后再进行适配的功能
  • 开放 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

3 years ago

新增高度适配功能

~ 对比宽度,当设备为 iPad 时,适配后的 value 会再乘上 iPadFitMultiple 对比宽度,强制适配,不论是 iPhone 还是 iPad 都不会乘上 iPadFitMultiple 对比高度,对应 ~ ,整屏高度
对比高度,对应 ,整屏高度
∣=新增高度适配功能对比高度,对应 ,安全区域内的高度
∥= 对比高度,对应 ,安全区域内的高度
∣- 对比高度,对应 ,除去刘海区域的安全区域内的高度
∥- 对比高度,对应 ,除去刘海区域的安全区域内的高度

1.0.1

4 years ago

#12 修复字体在适配后被修改的问题

1.0.0

4 years ago

Swift 5

0.4.1

5 years ago

调整podspec文件,修复OC集成后无.h文件的问题