iPhone和iPad公用资源

本文介绍了一种使Storyboard能在iPhone和iPad上通用的方法,通过调整Storyboard的尺寸以适应不同设备,利用CGAffineTransform进行缩放,并给出了计算self.autoScaleSize的具体公式。

说到storyboard,我们第一时间就是想到的它代码合并的难度问题。其实还有一个问题就是,如果需要同时开发iPhone和iPad版本的话。

我们常常需要两套尺寸不一样的Storyboard,或者在同一个Storyboard场景上添加不同的identifier来区别开来。

那如果我们能用一套来同时表示,那不就是更好了么?


首先可以参考这个修改,将iPhone和iPad的storyboard设置成一种形式:

http://blog.youkuaiyun.com/kmyhy/article/details/28428227

并且我们需要用大的尺寸来表示iPhone的(即iPad版本的资源来表示),因为大缩成小可以,但是小放大成大就会失真


如果是全屏的展示界面的话,是非常好修改的,因为全屏的缩放比较简单,统一由大缩小即可。

但是如果Storyboard中的展示界面是非全屏的,我们该怎么做?

我们可以用CGAffineTransform来修改

CGAffineTransform controllerTransform = CGAffineTransformScale(controller.view.transform, self.autoScaleSize, self.autoScaleSize);
[controller.view setTransform:controllerTransform];

而难点就是这个 self.autoScaleSize 的确定的问题了

根据市面上iPhone的尺寸基本可以确定为以下:

320*640

375*667

414*736

假设我们想展示的视图是占空间并不大的一个位置,并且随着屏幕尺寸的增大而增大,我们可以用根据屏幕尺寸的比例来扩大

我们也可以用下面的方式,假设我们在Storyboard的视图是470尺寸的

self.autoScaleSize = width / 320.0f * 0.65;  //缩放比例, 以ipad为准
self.autoScaleSize = (self.autoScaleSize<1?self.autoScaleSize:1.0f);

以320为最小基准,例如,320为例子计算:

320/320 * 0.65 = 0.65

因为小于1,即就是所要的缩放系数,470*0.65 = 305.5

所以在iPhone4/4s/5/5s 上展示的界面就是305.5的尺寸


如果以iPhone6/6s/7 的尺寸  375的计算是怎样?

375/320 * 0.65  =  0.76

0.76 * 470  =  358

那在iPhone6/6s/7 上展示的就是358的尺寸


但是如果是iPad这种大尺寸的呢,那这样无限的展大不就是有点太大了么,所以我们可以限定一个最大值,就是1

如果 width /320 * 0.65 大于一,我们则取一

这样就相当于展示了原本Storyboard所要展示的尺寸了~~




总结:

iPhone  iPad 公用一套资源是相对比较好解决的,但是如果是用一套资源的尺寸去表示两者的话,就需要采取这类型缩放的做法了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值