リポジトリをローカルエリアにクローニングまたはダウンロードした後、最初にpod installを実行してから、 SwiftyFitsize.xcworkspaceを開いてください
use_frameworks!
pod 'SwiftyFitsize' 1. File > Add Packages
2. Search https://github.com/LinXunFeng/SwiftyFitsize.git
3. Select "Up to Next Major" with "1.4.1"


~または≈iPhoneの適応効果は同じです。iPadの場合、iPadの幅が大きすぎる≈、幅の比率に応じて計算され、ディスプレイは特に肥大化します。現時点では~ディスプレイにより適しています。
~≈基づいて、iPadiPadFitMultiple掛けます。- 一般的に、
~使用します。- 他のオペレーターにも同じことが言えます。詳細については、以下の手順を参照してください。
| オペレーター | 説明します |
|---|---|
~ | 幅を比較します。デバイスがiPadの場合、適応後のvalue iPadFitMultiple |
≈ | 幅、力の適応、 iPhoneもiPad iPadFitMultipleとを乗算しないと比較します |
∣ | 画面の高さ~に対応する比較の高さ |
∥ | ≈に対応する比較高さ、画面の高さ全体 |
∣= | 安全な領域内の高∣に対応する比較の高さ |
∥= | ∥に対応する比較の高さ、安全エリア内の高さ |
∣- | 比較の高さは、バン∣の安全なエリア内の高さを削除します |
∥- | ∥に対応する比較の高さは、強打領域の安全なエリア内の高さを削除します |
高さの適応の比較
- 赤:
∣と∥、画面全体の高さに適応します- 青:
∣=および∥=中央のセキュリティエリアの高さに適応する- 緑:
∣-および∥-底を含む安全な領域に適応する

例を挙げてください
~ :デバイスがiPadの場合、適応された値にiPadFitMultipleが乗算されます
100 ~
UIFont . systemFont ( ofSize : 14 ) ~
CGPoint ( x : 10 , y : 10 ) ~
CGRect ( x : 10 , y : 10 , width : 100 , height : 100 ) ~
UIEdgeInsetsMake ( 10 , 10 , 10 , 10 ) ~ ≈ :(オプション + x)適応された値にiPadFitMultipleは乗算されません
100 ≈
UIFont . systemFont ( ofSize : 14 ) ≈
CGPoint ( x : 10 , y : 10 ) ≈
CGRect ( x : 10 , y : 10 , width : 100 , height : 100 ) ≈
UIEdgeInsetsMake ( 10 , 10 , 10 , 10 ) ≈是否为iPhoneX系列的参照高度とiPadFitMultiple次の方法を呼び出すことができるかどうか、参照高度参照宽度、参照高さを変更する
/// 设置参照的相关参数
///
/// - Parameters:
/// - width: 参照的宽度
/// - height: 参照的高度
/// - isIPhoneXSeriesHeight: 是否为iPhoneX系列的参照高度
/// - iPadFitMultiple: iPad 在适配后所得值的倍数 (0 , 1]
SwiftyFitsize . reference (
width : 414 ,
height : 896 ,
isIPhoneXSeriesHeight : true ,
iPadFitMultiple : 0.5
) enum SwiftyFitType : Int {
/// Original Value
case none = 0
/// ~
case flexibleWidth = 1
/// ≈
case forceWidth = 2
/// ∣
case flexibleHeight = 3
/// ∥
case forceHeight = 4
/// ∣=
case flexibleSafeAreaCenterHeight = 5
/// ∥=
case forceSafeAreaCenterHeight = 6
/// ∣-
case flexibleSafeAreaWithoutTopHeight = 7
/// ∥-
case forceSafeAreaWithoutTopHeight = 8
}サポートされているUIコントロールUITextView UILabel UIButton UITextField
上記のenum SwiftyFitTypeを参照してくださいFontFitType

制約適応

~と≈の使用についてiPad

OCオペレーターの過負荷をサポートしていないため、マクロでのみ適応できます。
XibとStoryboardは、上記と同じように使用されます。
Swift运算符OC宏に対応しています
| 迅速なオペレーター | OCマクロ |
|---|---|
~ | SF_xx |
≈ | SFZ_xx |
∣ | SF_FH_xx |
∥ | SFZ_FH_xx |
∣= | SF_SCH_xx |
∥= | SFZ_SCH_xx |
∣- | SF_SBH_xx |
∥- | SFZ_SBH_xx |
注: xx 、次のタイプのFont 、 Int 、 Float 、 Point 、 Size 、 Rect 、 EdgeInsetsをサポートしています
@import SwiftyFitsize;注:
SPMによって追加された依存関係を使用しており、マクロを使用する必要がある場合(SF_Floatなど)、
SwiftyFitsizeOCSupportをインポートする必要がありますが、SwiftyFitsizeをインポートできません。
@import SwiftyFitsizeOCSupport;是否为iPhoneX系列的参照高度参照宽度さとiPadFitMultiple参照幅、参照高度変更する[SwiftyFitsize referenceWithWidth: 414
height: 896
isIPhoneXSeriesHeight: YES
iPadFitMultiple: 0.6 ];~ UIFont *font = [UIFont systemFontOfSize: 14 ];
UIFont *font1 = font.sf;
UIFont *font2 = SF_Font(font);
CGFloat num = SF_Float( 14 );
CGPoint point = SF_Point(CGPointMake( 10 , 10 ));
CGSize size = SF_Size(CGSizeMake( 100 , 100 ));
CGRect rect = SF_Rect(CGRectMake( 10 , 10 , 100 , 100 ));
UIEdgeInsets edge = SF_EdgeInsets(UIEdgeInsetsMake( 0 , 0 , 100 , 100 ));
≈ UIFont *font1 = font.sfz;
UIFont *font2 = SFZ_Font(font);
CGFloat num = SFZ_Float( 14 );
CGPoint point = SFZ_Point(CGPointMake( 10 , 10 ));
CGSize size = SFZ_Size(CGSizeMake( 100 , 100 ));
CGRect rect = SFZ_Rect(CGRectMake( 10 , 10 , 100 , 100 ));
UIEdgeInsets edge = SFZ_EdgeInsets(UIEdgeInsetsMake( 0 , 0 , 100 , 100 ));他のオペレーターにも同じことが言えます
シナリオ:
tableViewの左右の間隔は、画面サイズが異なる場合は10です。10の左右の間隔を除外した後、Cell同じように適合します。使用法のアイデア:マイナス
20幅の合計で、残りのサイズに適応します。
次の呼び出し方法でPropertyWrapperスキームを使用することをお勧めします:1つと2つ。
struct Metric {
static let tableViewLeftRightMargin : CGFloat = 10 // 定义 tableView 的左右间距
...
static let tableViewHeight : CGFloat = Fit . $width ( 30 ) // 去掉左右边距后进行适配的值
static let rowLeftViewWidth : CGFloat = Fit . $width ( 177.5 )
static let rowCenterViewWidth : CGFloat = Fit . $width ( 100.5 )
static let rowRightViewWidth : CGFloat = Fit . $width ( 77 )
...
}
struct Fit {
// @WrappedSwiftyFitsize(fitType: .flexibleWidth, reduceValue: Metric.tableViewLeftRightMargin)
// fitType 默认值是 .flexibleWidth,所以可以不传
@ WrappedSwiftyFitsize ( reduceValue : Metric . tableViewLeftRightMargin * 2 )
static var width : CGFloat = 375
} 375は初期化値であり、特別な意味はありません。 Fit.widthを呼び出すときに値を取得できるというだけです。 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 ) " ) これは、 tableViewに適応し、TableViewの左側と右側の固定マージンを削除し、残りの幅をTableViewに適応させる場合です。
CGFloat fitWidth = [SwiftyFitsize fitWithSize: 40
fitType: SwiftyFitTypeFlexibleWidth
reduceValue: 20 ];簡単に使用できるマクロとして使用できます
# define kFitWidth ( value )
[SwiftyFitsize fitWithSize: value fitType: SwiftyFitTypeFlexibleWidth reduceValue: 20 ]マクロを使用して適応します
CGFloat fitWidth = kFitWidth ( 40 );
NSLog ( @" fitWidth -- %f " , fitWidth);効果は、赤、緑、青を含むバービューに示されています:

/// 计算结果类型
@ objc public enum SwiftyFitCalcResultType : Int {
/// 跟随全局配置
case globalConfig
/// 原始数据
case raw
/// 四舍五入
case round
/// 保留一位小数(根据第二位小数进行四舍五入)
case oneDecimalPlace
} .raw :影響は無視されます.round :影響範囲(-0.5, 0.5].oneDecimalPlace (-0.05, 0.05]
- 構成されていない場合、デフォルトは
.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に従って計算された値です
| 元の値 | 生 | ラウンド | onedecimalplace |
|---|---|---|---|
| 35 | 36.478873239436616 | 36.0 | 36.5 |
| 36 | 37.52112676056338 | 38.0 | 37.5 |
以下に、簡単に検索するためにいくつかのデバイスの対応する解像度をリストします
| 装置 | 論理解像度(ポイント) | デバイス解像度(ピクセル) |
|---|---|---|
| se | 320x568 | 640x1136 |
| 6(s)/7/8/se(第2世代) | 375x667 | 750x1334 |
| 6(s)+/7+/8+ | 414x736 | 1080x1920 |
| x(s) / 11pro | 375x812 | 1125x2436 |
| XR / 11 | 414x896 | 828x1792 |
| XS Max / 11Pro Max | 414x896 | 1242x2688 |
| 12ミニ / 13ミニ | 360x780 | 1080x2340 |
| 12(pro) / 13(pro) | 390x844 | 1170x2532 |
| 12 Pro Max / 13 Pro Max | 428x926 | 1284x2778 |
SwiftyFitsizeは、MITライセンスの下で利用できます。詳細については、ライセンスファイルを参照してください。

![]() | ![]() |
|---|---|