หลังจากโคลนนิ่งหรือดาวน์โหลดที่เก็บไปยังพื้นที่ท้องถิ่นโปรดเรียกใช้ 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 ที่รองรับคือ: UILabel UIButton UITextView 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เมื่อขนาดหน้าจอแตกต่างกัน หลังจากยกเว้นระยะห่างซ้ายและขวาของ10Cellจะถูกปรับให้เข้ากันได้อย่างเท่าเทียมกันแนวคิดการใช้งาน: ลบทั้งหมด
20ความกว้างและปรับให้เข้ากับขนาดที่เหลือ
ขอแนะนำให้ใช้โครงการ PropertyWrapper สำหรับวิธีการโทรต่อไปนี้: หนึ่งและสอง
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.4788732394366616 | 36.0 | 36.5 |
| 36 | 37.52112676056338 | 38.0 | 37.5 |
รายการต่อไปนี้แสดงความละเอียดที่สอดคล้องกันของอุปกรณ์บางอย่างเพื่อการค้นหาที่ง่าย
| อุปกรณ์ | ความละเอียดเชิงตรรกะ (จุด) | ความละเอียดของอุปกรณ์ (พิกเซล) |
|---|---|---|
| SE | 320x568 | 640x1136 |
| 6 (s)/7/8/se (รุ่นที่สอง) | 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 ดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม

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