iPhone和iPad公用资源

    xiaoxiao2021-03-25  41

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

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

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

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

    http://blog.csdn.net/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 公用一套资源是相对比较好解决的,但是如果是用一套资源的尺寸去表示两者的话,就需要采取这类型缩放的做法了

    转载请注明原文地址: https://ju.6miu.com/read-50147.html

    最新回复(0)