iOS界面开发须要用Point乘以屏幕比例系数吗

iOS界面开发须要用Point乘以屏幕比例系数吗

现状

因为公司给 app 设计的效果图是基于 iPhone 6 的,效果图的宽度是 375 point。为了适应大小屏幕,咱们专门封装了一个函数来获取一个适配的点。app

inline CGFloat Point(void)
{
    static CGFloat point;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        point = ([UIScreen mainScreen].bounds.size.width / 375.0f);//以iPhone6为标准的比例值
    });
    
    return point;
}

因此在使用的时候,就会是效果图上里面的点乘以适配点。好比一张 140 x 140 图片距离屏幕左边 20 点。函数

UIImageView *imageView = [UIImageView new];
imageView.frame = CGRectMake(20 * Point(), 0, 140 * Point(), 140 * Point());

这样的话,在大屏幕里面,间距和图片大小都会比效果图更大,工具

在小屏幕里面,间距和图片大小都会比效果图更小,这样就能够适配小屏幕了。布局

虽然这样很好的适配小屏幕,可是会让大屏幕的间距看起来很大,整体看起来没有很好的利用空间。好比距离左边 20 点,在 7p 上就是 22.08,会多出 2.08 的点,这样就会距离左边更大了。字体

20 * Point() = 20 * 1.104 = 22.08

<!--more-->spa

两种经常使用的计算方式

  1. 点乘以系数,既 n * Point(),这就是上面所说的方式。
  2. 就是直接使用点,这样的话就能够在不一样的屏幕空间之间的间距就是同样的了,不会形成像方式一在大屏幕上的空洞感。可是缺点就是,若是在一行上全部的控件都是固定宽度而且超过最小屏幕的话,就不适用了,若是真有这种状况,那我以为设计上就不对了,在设计上至少要让一行上某一个控件自适应。

优酷用的是什么方式呢?

优酷是怎么处理这个问题的呢?
我用 Reveal 捕获了优酷在 5s(越狱) 上的界面,而后在 7p(系统版本高了,越不了监狱) 作了截图。设计

而后用 ps 工具对 7p 上的截图作了尺寸获取,并与 5s 上的 reveal 界面进行对比。发现这两个机型下,九宫格图片距离屏幕左边都是 9 个点,九宫格图片之间的距离都是 3 个点,包括头像左右,上下,还有头像大小都是同样的。code

iPhone 5s:
优酷_5s.PNG图片

iPhone 7 Plus:
优酷_7p_结论就是无论屏幕尺寸仍是按点去布局.PNG开发

淘宝用的是什么方式呢?

淘宝是怎么处理这个问题的呢?
我用 Reveal 捕获了淘宝在 5s(越狱) 上的界面,而后在 7p(系统版本高了,越不了监狱) 作了截图。

淘宝对比的结果跟优酷同样的,在间距上都是用的点。图片的大小都是 140 点。图片上下的间距都是 6 点。

iPhone 5s:
淘宝_5s_标题是14号字体.PNG

iPhone 7 Plus:
淘宝_7p_结论就是无论屏幕尺寸仍是按点去布局.PNG

我来看看淘宝在 5s 上的字号与 7p 上字号是否一致。

iPhone 5s 上标题的字号是 14。
淘宝截图1.jpg

iPhone 7 Plus 上的字号也是 14,字号与 5s 上的是同样的。
淘宝_7p_结论是标题在大小屏幕是14号字体.png

总结

通过上面的对比,咱们能够发现直接用点去布局,才是合理的,能够更好的利用屏幕空间,让大小屏幕在观感上有一致的体验。并且也会少了不少像素不对齐的状况。

相关文章
相关标签/搜索