Nachdem Sie das SwiftyFitsize.xcworkspace nach dem Klonen oder Herunterladen in die Region geklonen oder pod install haben
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"


Ob es
~oder≈der Anpassungseffekt füriPhoneist der gleiche.≈die Breite desiPadzu groß ist, wird für dasiPadweiterhin nach dem Breitenverhältnis berechnet, und das Display wird besonders aufgebläht. Zu diesem~ist es besser für das Display geeignet.
~Multiplizieren Sie auf der Grundlage von≈dasiPadiPadFitMultiple.- Verwenden Sie es im Allgemeinen
~.- Gleiches gilt für andere Betreiber. Weitere Informationen finden Sie in den folgenden Anweisungen.
| Betreiber | veranschaulichen |
|---|---|
~ | Vergleichen Sie die Breite. Wenn das Gerät iPad ist, wird value nach der Anpassung mit iPadFitMultiple |
≈ | iPhone iPad iPadFitMultiple |
∣ | Vergleichshöhe, entsprechend ~ die gesamte Bildschirmhöhe |
∥ | Vergleichende Höhe, entsprechend ≈ die gesamte Bildschirmhöhe |
∣= | Vergleichshöhe, entsprechend ∣ , Höhe innerhalb des sicheren Bereichs |
∥= | Vergleichshöhe, entsprechend ∥ , Höhe innerhalb des sicheren Bereichs |
∣- | Vergleichshöhe, entsprechend ∣ , entfernen Sie die Höhe innerhalb des sicheren Bereichs des Knallbereichs |
∥- | Vergleichshöhe, entsprechend ∥ entsprechend ∥, entfernen Sie die Höhe innerhalb des sicheren Bereichs des Knallbereichs |
Vergleich der Höhenanpassung
- Rot:
∣und∥, passen Sie sich an die Höhe des gesamten Bildschirms an- Blau:
∣=und∥=an die Höhe des zentralen Sicherheitsbereichs anpassen- Grün:
∣-und∥-an einen sicheren Bereich einschließlich des Bodens anpassen

Geben Sie ein Beispiel an
~ : Wenn das Gerät iPad ist, wird der angepasste Wert mit iPadFitMultiple multipliziert
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) Der angepasste Wert wird nicht mit iPadFitMultiple multipliziert
100 ≈
UIFont . systemFont ( ofSize : 14 ) ≈
CGPoint ( x : 10 , y : 10 ) ≈
CGRect ( x : 10 , y : 10 , width : 100 , height : 100 ) ≈
UIEdgeInsetsMake ( 10 , 10 , 10 , 10 ) ≈ Ändern Sie参照宽度,参照高度,是否为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
} Unterstützte UI -Steuerelemente sind: UILabel UIButton UITextView UITextField
Weitere Informationen finden Sie im obigen enum SwiftyFitType FontFitType

Einschränkungsanpassung

iPad über ~ und ≈ in der Verwendung

Da
OCdie Überlastung des Bedieners nicht unterstützt, kann es nur mit Makros angepasst werden.
XibundStoryboardwerden genauso verwendet, wie oben erwähnt.
Swift运算符entsprechen OC宏
| Schnellbetreiber | OC Makro |
|---|---|
~ | SF_xx |
≈ | SFZ_xx |
∣ | SF_FH_xx |
∥ | SFZ_FH_xx |
∣= | SF_SCH_xx |
∥= | SFZ_SCH_xx |
∣- | SF_SBH_xx |
∥- | SFZ_SBH_xx |
HINWEIS: xx unterstützt die EdgeInsets Typen Font , Int , Float , Point , Size , Rect
@import SwiftyFitsize;Hinweis: Wenn Sie eine von
SPMhinzugefügte Abhängigkeit verwenden und ein Makro verwenden müssen (z. B.:SF_Float),Sie müssen
SwiftyFitsizeOCSupportimportieren, währendSwiftyFitsizenicht importiert werden kann.
@import SwiftyFitsizeOCSupport;iPadFitMultiple参照宽度,参照高度,是否为iPhoneX系列的参照高度[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 ));Gleiches gilt für andere Betreiber
Szenario: Der linke und rechte Abstand von
tableViewbeträgt10wenn die Bildschirmgröße unterschiedlich ist. Nach dem Ausschluss des linken und rechten Abstands von10istCellgleichmäßig angepasst.Verwendungsidee: minus
20Breite insgesamt und passen Sie sich an die verbleibende Größe an.
Es wird empfohlen, das PropertyWrapper -Schema für die folgenden Aufrufmethoden zu verwenden: eins und zwei.
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 ist ein Initialisierungswert und hat keine besondere Bedeutung. Es ist nur so, dass der Wert beim Aufrufen Fit.width erhalten werden kann. Wenn der Wert der Fit.width nicht verwendet wird, wird die Initialisierung nicht durchgeführt.
Anrufmethode:
// 移除指定尺寸后的适配,调用方式:
// 以下都是以适配 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 ) " ) Ist dies der Fall der Anpassung an tableView , entfernen Sie die festen Ränder auf der linken und rechten Seite der Tabellenansicht und passen Sie die verbleibende Breite an die Tabelleansicht an.
CGFloat fitWidth = [SwiftyFitsize fitWithSize: 40
fitType: SwiftyFitTypeFlexibleWidth
reduceValue: 20 ];Es kann als Makro zur einfachen Verwendung verwendet werden
# define kFitWidth ( value )
[SwiftyFitsize fitWithSize: value fitType: SwiftyFitTypeFlexibleWidth reduceValue: 20 ]Verwenden Sie Makros, um sich anzupassen
CGFloat fitWidth = kFitWidth ( 40 );
NSLog ( @" fitWidth -- %f " , fitWidth);Der Effekt wird in der Stangenansicht angezeigt, die Rot, Grün und Blau enthält:

/// 计算结果类型
@ objc public enum SwiftyFitCalcResultType : Int {
/// 跟随全局配置
case globalConfig
/// 原始数据
case raw
/// 四舍五入
case round
/// 保留一位小数(根据第二位小数进行四舍五入)
case oneDecimalPlace
} .raw : Der Einfluss wird ignoriert.round : Einflussbereich (-0.5, 0.5].oneDecimalPlace : Effektbereich (-0.05, 0.05]
- Wenn nicht konfiguriert, ist die Standardeinstellung
.raw.globalConfignimmt den hier konfigurierten Typ nimmt- Wenn es hier noch auf
.globalConfigeingestellt ist, wird es auf.rawInnen zurücksetzen
SwiftyFitsize . reference ( width : 375 , calcResultType : . oneDecimalPlace ) // 全局配置计算结果为保留一位小数Das Folgende ist die globale Konfiguration, ohne den Parameter
calcResultTypeanzugeben.
calcResultType separat angeben
SwiftyFitsize . fit (
size : 35 , // 36
fitType : . flexibleWidth ,
reduceValue : 10 * 2 ,
calcResultType : . raw // .round .oneDecimalPlace
) PropertyWrapper -Methode
// calcResultType: .raw .round .oneDecimalPlace
@ WrappedSwiftyFitsize ( reduceValue : Metric . tableViewLeftRightMargin * 2 , calcResultType : . raw )
static var width : CGFloat = 375 Die erste Spalte ist der Wert vor der Anpassung
Die anderen Spalten sind Werte, die nach verschiedenen SwiftyFitCalcResultType nach der Anpassung berechnet wurden
| Ursprünglicher Wert | roh | runden | OneDecimal -Ort |
|---|---|---|---|
| 35 | 36.478873239436616 | 36.0 | 36,5 |
| 36 | 37.52112676056338 | 38.0 | 37,5 |
Im Folgenden werden die entsprechenden Auflösungen einiger Geräte für eine einfache Suche aufgeführt
| Ausrüstung | Logische Auflösung (Punkt) | Geräteauflösung (Pixel) |
|---|---|---|
| Se | 320x568 | 640x1136 |
| 6 (s)/7/8/se (zweite Generation) | 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 ist im Rahmen der MIT -Lizenz verfügbar. Weitere Informationen finden Sie in der Lizenzdatei.

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