저장소를 로컬 영역으로 클로닝하거나 다운로드 한 후 먼저 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 곱하지 않습니다. |
∣ | ~ , 전체 화면 높이에 해당하는 비교 높이 |
∥ | ≈ 에 해당하는 비교 높이, 전체 화면 높이 |
∣= | 안전 영역 내에서 ∣ 에 해당하는 비교 높이 |
∥= | 안전 영역 내의 ∥ 에 해당하는 비교 높이 |
∣- | ∣ 에 해당하는 비교 높이는 Bang 영역의 안전 영역 내에서 높이를 제거합니다. |
∥- | ∥ 에 해당하는 비교 높이는 Bang 영역의 안전 영역 내에서 높이를 제거합니다. |
높이 적응의 비교
- 빨간색 :
∣와∥, 전체 화면의 높이에 적응- 파란색 :
∣=및∥=중앙 보안 영역의 높이에 적응- 녹색 :
∣-및∥-바닥을 포함한 안전한 지역에 적응

예를 들어보세요
~ : 장치가 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
} 지원 UITextField UI 컨트롤은 UILabel UIButton UITextView
위의 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;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 ));다른 운영자에게도 마찬가지입니다
시나리오 :
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 에 적응하는 경우, 테이블 뷰의 왼쪽과 오른쪽의 고정 마진을 제거하고 나머지 너비를 테이블 뷰에 조정하십시오.
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 에 따라 계산 된 값입니다.
| 원래 가치 | 날것의 | 둥근 | oneedecimalplace |
|---|---|---|---|
| 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 (프로) / 13 (프로) | 390x844 | 1170x2532 |
| 12 Pro Max / 13 Pro Max | 428x926 | 1284x2778 |
SwiftyFitsize는 MIT 라이센스에 따라 제공됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.

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