[请教] 在 iPhone Portrait Mode 下界面怎么更优雅地适配不同设备屏幕大小

2016-07-02 19:21:13 +08:00
 enjoeq
大家好,我们的项目是 iPhone Portrait Mode Only 的,最近在做的一个新功能的 UI 遇到了适配不同设备屏幕大小(从 4s 到 6s )的问题,而 Size Class 据我所知没办法解决这个问题,因为在 iPhone Portrait Mode 的情况下 trait 都是一样的,根本无法区分不同屏幕大小,而且目前我们项目还要支持 iOS 7 ,也用不了 Size Class 。

目前我能想到的只有根据 screen size 来手动判断当前是哪个设备,然后相应的计算控件的大小和位置来做 layout ,然而总觉得这样很 ugly ,代码看起来也不好看,所以想请教一下大家遇到这种情况下有什么好的办法?谢谢指教。
2667 次点击
所在节点    iDev
10 条回复
sablib
2016-07-02 19:37:45 +08:00
https://github.com/nixzhu/Ruler
用这种东西应该会方便一点。
TonyYOYO
2016-07-02 19:46:28 +08:00
autolayout ,,, masnory 你应该听说过吧。
xi_lin
2016-07-03 17:59:54 +08:00
首先和 UI 确认一下想要的是什么效果
是否是要在不同屏幕上缩放显示?是的话就只能等比写间距了。
enjoeq
2016-07-03 23:50:01 +08:00
@sablib 谢谢,可惜的是我们的这个项目还是 Objective-C 的,这个 Ruler 库是 swift ,估计不太适合我们,不过我会研究看看的。
enjoeq
2016-07-03 23:53:31 +08:00
@TonyYOYO 我所知道的是 masnory 是一个封装了 AutoLayout API 的一个库,用来更方便写 AutoLayout 代码的,不过我真的不知道怎么用 AutoLayout 去适配 iPhone Portrait Mode 下不同设备屏幕大小,用 Aspect Ratio 能控制控件按比例缩放,但是控件之间的距离没办法等比缩放啊,这样控件的位置就会变得奇怪。
可以更详细的说说怎么用 AutoLayout 解决这个问题吗,谢谢。
enjoeq
2016-07-03 23:57:51 +08:00
@xi_lin 等比写间距是指等比计算控件大小和间距吗?控件大小等比计算还好,连间距也要等比计算的话就会显得很繁杂,而且容易写错,就是不想这样才想问问大家有没有更好的办法😂。
xi_lin
2016-07-04 13:38:55 +08:00
@enjoeq 我们是写了个宏来做等比计算,也是比较麻烦
enjoeq
2016-07-04 16:13:07 +08:00
@xi_lin 可以把宏和宏的用法私信给我看看吗?或者给我讲讲宏的写法也可以啊,谢谢。
kitalphaj
2016-07-05 12:51:19 +08:00
间距其实本质上也是控件大小。你放一个 UIView 进去占位置就好了。
xi_lin
2016-07-05 13:21:36 +08:00
@enjoeq 我们的设计稿是按 750 屏幕出的,其他等比
#define SCREEN_RATIO_WITH_DESIGN ([[UIScreen mainScreen] bounds].size.width) / 375
#define SCALE_WITH_RATIO(x) (x * SCREEN_RATIO_WITH_DESIGN)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289842

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX