ios xib 四等分_iOS xib文件根据屏幕等比例缩放的适配

前言在此我不是和大家讨论,xib相对约束的使用,因为这些文章网上有一大堆的资料,这也不是我今天想要讲的东西。不知道大家平常有没有碰到过这样的情况。相信很多人在开发中都会使用storyboard和xib来写界面,所见即所得,拖拖拽拽就大工告成了,爽的很。不像纯代码写界面,还要各种alloc、addSubview。可提测后,UI设计师坐在你身边,对UI各种细节调整席卷而来。因为一般设计师是按照4.7屏...
摘要由CSDN通过智能技术生成

前言

在此我不是和大家讨论,xib相对约束的使用,因为这些文章网上有一大堆的资料,这也不是我今天想要讲的东西。

不知道大家平常有没有碰到过这样的情况。相信很多人在开发中都会使用storyboard和xib来写界面,所见即所得,拖拖拽拽就大工告成了,爽的很。不像纯代码写界面,还要各种alloc、addSubview。可提测后,UI设计师坐在你身边,对UI各种细节调整席卷而来。因为一般设计师是按照4.7屏幕来设计的,这个屏幕下的显示效果没问题,到了小点的屏幕或者大点屏幕的时候,就各种不满意了,各个控件的比例关系并不是他们想要的。每当这个时候就要从xib拉出NSLayoutConstraint属性来动态设置了。还有字体也是,xib设置了,还要钻进代码里面再动态设置一番,真是恶心死了!

所以我在想为什么不能像安卓屏幕适配一样,一切都是等比例适配,我们只要对着一个屏幕尺寸去做开发,其他的自动等比例缩放(按照基准屏幕的宽度去缩放,比如屏幕宽度375的控件width = 10pt,那么屏幕宽度750时就是width = 20pt了)。

解决方案

下文就是我针对上面的问题,提出的三种解决方案。

第一种:纯代码实现

为了能够更加好的控制这些UI控件的布局和设置,我开始在新项目中用纯代码去写界面了。虽然用的是Masonnry自动布局,但也难免要设置具体的值,在设值时,我会在加一层AdaptW(floatValue)宏定义包装。

- (void)private_addConstraintForSubViews

{

[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {

make.height.mas_equalTo(AdaptW(55));

make.left.right.equalTo(self);

make.top.equalTo(self);

}];

[self.pageCtl mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.bottom.right.equalTo(self);

make.height.mas_equalTo(AdaptW(8));

}];

}

AdaptW(floatValue)其实就是一个BSFitdpiUtil工具类方法的调用,以常用的基准屏幕,iphone 6 的375x667尺寸去换算的。代码如下:

#define kRefereWidth 375.0 // 参考宽度

#define kRefereHeight 667.0 // 参考高度

#define AdaptW(floatValue) [BSFitdpiUtil adaptWidthWithValue:floatValue]

#import

@interface BSFitdpiUtil : NSObject

/**

以屏幕宽度为固定比例关系,来计算对应的值。假设:参考屏幕宽度375,floatV=10;当前屏幕宽度为750时,那么返回的值为20

@param floatV 参考屏幕下的宽度值

@return 当前屏幕对应的宽度值

*/

+ (CGFloat)adaptWidthWithValue:(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值