WYAutoLayout 1.1.0

WYAutoLayout 1.1.0

wangyu 维护。



  • 作者:
  • wyxlh

WYAutoLayout

CI Status Version License Platform

示例

要运行示例项目,首先克隆仓库,然后在 Example 目录中运行 pod install

需求

在 iOS 开发过程中,开发人员通常会使用纯代码适配或 AutoLayout 进行适配。现在,开发人员主要是使用 AutoLayout 进行适配,有些人喜欢使用 Masonry 进行适配,也有很多人喜欢使用 xib 或 SB 进行适配。从性能方面来看,使用 Masonry 进行纯代码适配更有优势,而使用 xib 或 SB 将会增加 CPU 的消耗。

##本文主要讲解使用 xib 进行屏幕和字体大小的适配

对控件添加约束 并自动调整约束大小

我们需要对 "NSLayoutConstraint" 添加一个分类,一定要加上 "IBInspectable" 关键字

property (nonatomic, assign) IBInspectable BOOL isAdaptateScreen;
- (BOOL)isAdaptateScreen {
return YES;
}

- (void)setIsAdaptateScreen:(BOOL)isAdaptateScreen {
//比例
CGFloat proportion = 1.0;
if (Is_IPHONE5) {
//如果是 iPhone5比例设置为0.85
proportion = 0.85;
}else if (Is_IPHONE6Plus || Is_IPHONEX || Is_IPHONEXs || Is_IPHONEXs_Max || Is_IPHONEXr) {
//如果是 6P,X,XS 或者 XS_MAX设置为 1.12
proportion = 1.12;
}
//设置新的约束值
self.constant = self.constant * proportion;
}

然后编译就可以在 xib 中选择约束,看到 39044A88-CB5A-458B-ACA6-1A6371D6E222.png

然后我把程序跑起来可以看到打印效果如下3DD32677-16BC-41A2-916A-05372EABDCED.png

我们可以在同一设置下全选约束,从而实现屏幕适配的效果。

对字体大小自适应屏幕的设置

与适配约束的道理相同,我们需要给UILable添加一个分类,因为UIFont本身在xib上没有载体,所以我们调整字体大小只能通过UILable来实现。下面是UIFont的分类代码。

+ (UIFont *)wy_systemFontOfSize:(CGFloat)fontSize {
return [UIFont systemFontOfSize:fontSize + [self wy_FontScaleSize]];
}

+ (UIFont *)wy_boldSystemFontOfSize:(CGFloat)fontSize {
return [UIFont wy_boldSystemFontOfSize:fontSize + [self wy_FontScaleSize]];
}

+ (CGFloat)wy_FontScaleSize {
if (Is_IPHONE5) {
return -2;
}else if(Is_IPHONE6) {
return 0;
}else{
return 1;
}
}

UILable 分类代码

//适配屏幕的字体
@property (nonatomic, assign) IBInspectable BOOL isAdapterFont;
- (BOOL)isAdapterFont {
return YES;
}

- (void)setIsAdapterFont:(BOOL)isAdapterFont {
BOOL isBold = [self.font.fontName hasSuffix:@"-Bold"];
CGFloat adapterSize = self.font.pointSize + [UIFont wy_FontScaleSize];
if(isBold) {
self.font = [UIFont boldSystemFontOfSize:adapterSize];
} else {
self.font = [UIFont systemFontOfSize:adapterSize];
}
}

适配字体大小的方式和适配约束的方式相同,都是在xib中选择UILable,将属性设置为on,如图F60B4B19-6DAE-4A0A-A007-FCF4DB6430A5.png 模拟器跑起来的效果786C10E4-CF5E-4201-B29B-1263F7A9CDAB.png

约束适配和字体大小适配就完成了,是不是很方便?

源码在 GitHub

安装

WYAutoLayout可以通过CocoaPods获取。要安装它,请在Podfile中添加以下行

pod 'WYAutoLayout'

作者

wyxlh,[email protected]

许可证

WYAutoLayout 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。