Après le clonage ou le téléchargement du référentiel dans la zone locale, veuillez d'abord exécuter pod install , puis ouvrir 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"


Que ce soit
~ou≈l'effet d'adaptation pouriPhoneest le même. PouriPad,≈la largeur deiPadest trop grande, elle sera toujours calculée en fonction du rapport de largeur et l'affichage sera particulièrement gonflé. Pour le~il conviendra plus à l'écran.
~Sur la base de≈, multipliez l'iPadiPadFitMultiple.- Généralement, utilisez-le
~.- Il en va de même pour les autres opérateurs. Veuillez vous référer aux instructions ci-dessous pour plus de détails.
| Opérateurs | illustrer |
|---|---|
~ | Comparez la largeur. Lorsque l'appareil est iPad , value après l'adaptation sera multipliée en iPadFitMultiple |
≈ | Comparez la largeur, l'adaptation de force, ni iPhone ni iPad ne seront multipliés par iPadFitMultiple |
∣ | Hauteur de comparaison, correspondant à ~ , toute la hauteur de l'écran |
∥ | Hauteur comparative, correspondant à ≈ , toute la hauteur de l'écran |
∣= | Hauteur de comparaison, correspondant à ∣ , hauteur dans la zone sûre |
∥= | Hauteur de comparaison, correspondant à ∥ , hauteur dans la zone sûre |
∣- | Hauteur de comparaison, correspondant à ∣ , retirer la hauteur dans la zone sûre de la zone de bang |
∥- | Hauteur de comparaison, correspondant à ∥ , retirez la hauteur dans la zone sûre de la zone de bang |
Comparaison de l'adaptation en hauteur
- Rouge:
∣et∥, s'adapter à la hauteur de l'écran entier- Bleu:
∣=et∥=s'adapter à la hauteur de la zone de sécurité centrale- Vert:
∣-et∥-adapter à une zone sûre comprenant le fond

Donner un exemple
~ : Lorsque l'appareil est iPad , la valeur adaptée sera multipliée par 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 ) ~ ≈ : (option + x) La valeur adaptée ne sera pas multipliée par 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 ) ≈ Modifier参照宽度,参照高度,是否为iPhoneX系列的参照高度et iPadFitMultiple peut appeler la méthode suivante
/// 设置参照的相关参数
///
/// - 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
} UITextField commandes d' UITextView UIButton UILabel
Veuillez vous référer à enum SwiftyFitType ci-dessus FontFitType

Adaptation de contrainte

iPad sur ~ et ≈ en usage

Étant donné que
OCne prend pas en charge la surcharge de l'opérateur, il ne peut être adapté qu'avec des macros.
XibetStoryboardsont utilisés de la même manière que ce qui est mentionné ci-dessus.
Swift运算符correspondent aux OC宏
| Opérateur rapide | OC macro |
|---|---|
~ | SF_xx |
≈ | SFZ_xx |
∣ | SF_FH_xx |
∥ | SFZ_FH_xx |
∣= | SF_SCH_xx |
∥= | SFZ_SCH_xx |
∣- | SF_SBH_xx |
∥- | SFZ_SBH_xx |
Remarque: xx prend en charge les types suivants, Font Int Float , Point , taille, Size , Rect , EdgeInsets
@import SwiftyFitsize;Remarque: si vous utilisez une dépendance ajoutée par
SPMet que vous devez utiliser une macro (telle que:SF_Float),Vous devez importer
SwiftyFitsizeOCSupport, tandis queSwiftyFitsizene peut pas être importé.
@import SwiftyFitsizeOCSupport;参照宽度,参照高度,是否为iPhoneX系列的参照高度et 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 ));Il en va de même pour les autres opérateurs
Scénario: l'espacement gauche et droit de
tableViewest10lorsque la taille de l'écran est différente. Après avoir exclu l'espacement gauche et droit de10,Cellest adaptée de manière égale.Idée d'utilisation: moins
20largeur au total et s'adapter à la taille restante.
Il est recommandé d'utiliser le schéma PropertyWrapper pour les méthodes d'appel suivantes: un et deux.
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 est une valeur d'initialisation et n'a pas de sens particulier. C'est juste que la valeur peut être obtenue lors de l'appel Fit.width . Si la valeur de Fit.width N'est pas utilisée, l'initialisation ne sera pas effectuée.
Méthode d'appel:
// 移除指定尺寸后的适配,调用方式:
// 以下都是以适配 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 ) " ) Est-ce le cas de l'adaptation à tableView , de supprimer les marges fixes sur les côtés gauche et droit de la vue de la table et adapter la largeur restante à la vue de la table.
CGFloat fitWidth = [SwiftyFitsize fitWithSize: 40
fitType: SwiftyFitTypeFlexibleWidth
reduceValue: 20 ];Il peut être utilisé comme macro pour une utilisation facile
# define kFitWidth ( value )
[SwiftyFitsize fitWithSize: value fitType: SwiftyFitTypeFlexibleWidth reduceValue: 20 ]Utilisez des macros pour s'adapter
CGFloat fitWidth = kFitWidth ( 40 );
NSLog ( @" fitWidth -- %f " , fitWidth);L'effet est indiqué dans la vue de la barre contenant du rouge, du vert et du bleu:

/// 计算结果类型
@ objc public enum SwiftyFitCalcResultType : Int {
/// 跟随全局配置
case globalConfig
/// 原始数据
case raw
/// 四舍五入
case round
/// 保留一位小数(根据第二位小数进行四舍五入)
case oneDecimalPlace
} .raw : L'impact est ignoré.round : plage d'influence (-0.5, 0.5].oneDecimalPlace : plage d'effet (-0.05, 0.05]
- Si ce n'est pas configuré, la valeur par défaut est
.raw.globalConfigprend le type configuré ici- S'il est toujours défini sur
.globalConfigici, il sera réinitialisé à.rawen interne
SwiftyFitsize . reference ( width : 375 , calcResultType : . oneDecimalPlace ) // 全局配置计算结果为保留一位小数Ce qui suit est la configuration globale sans spécifier le paramètre
calcResultType.
Spécifiez calcResultType séparément
SwiftyFitsize . fit (
size : 35 , // 36
fitType : . flexibleWidth ,
reduceValue : 10 * 2 ,
calcResultType : . raw // .round .oneDecimalPlace
) Méthode PropertyWrapper
// calcResultType: .raw .round .oneDecimalPlace
@ WrappedSwiftyFitsize ( reduceValue : Metric . tableViewLeftRightMargin * 2 , calcResultType : . raw )
static var width : CGFloat = 375 La première colonne est la valeur avant l'adaptation
Les autres colonnes sont des valeurs calculées en fonction de différents SwiftyFitCalcResultType après l'adaptation
| Valeur d'origine | brut | rond | Onededecimalplace |
|---|---|---|---|
| 35 | 36.478873239436616 | 36.0 | 36.5 |
| 36 | 37.52112676056338 | 38.0 | 37.5 |
Le suivant répertorie les résolutions correspondantes de certains appareils pour une recherche facile
| équipement | Résolution logique (point) | Résolution de l'appareil (pixel) |
|---|---|---|
| SE | 320x568 | 640x1136 |
| 6 (s) / 7/8 / SE (deuxième génération) | 375x667 | 750x1334 |
| 6 (s) + / 7 + / 8 + | 414x736 | 1080x1920 |
| X (s) / 11pro | 375x812 | 1125x2436 |
| Xr / 11 | 414x896 | 828x1792 |
| Xs max / 11pro max | 414x896 | 1242x2688 |
| 12 Mini / 13 Mini | 360x780 | 1080x2340 |
| 12 (pro) / 13 (pro) | 390x844 | 1170x2532 |
| 12 Pro Max / 13 Pro Max | 428x926 | 1284x2778 |
SwiftyFitSize est disponible sous la licence MIT. Voir le fichier de licence pour plus d'informations.

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