V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
enjoeq
V2EX  ›  iDev

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

  •  
  •   enjoeq · 2016-07-02 19:21:13 +08:00 · 2828 次点击
    这是一个创建于 3068 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,我们的项目是 iPhone Portrait Mode Only 的,最近在做的一个新功能的 UI 遇到了适配不同设备屏幕大小(从 4s 到 6s )的问题,而 Size Class 据我所知没办法解决这个问题,因为在 iPhone Portrait Mode 的情况下 trait 都是一样的,根本无法区分不同屏幕大小,而且目前我们项目还要支持 iOS 7 ,也用不了 Size Class 。

    目前我能想到的只有根据 screen size 来手动判断当前是哪个设备,然后相应的计算控件的大小和位置来做 layout ,然而总觉得这样很 ugly ,代码看起来也不好看,所以想请教一下大家遇到这种情况下有什么好的办法?谢谢指教。
    10 条回复    2016-07-05 13:21:36 +08:00
    sablib
        1
    sablib  
       2016-07-02 19:37:45 +08:00
    https://github.com/nixzhu/Ruler
    用这种东西应该会方便一点。
    TonyYOYO
        2
    TonyYOYO  
       2016-07-02 19:46:28 +08:00
    autolayout ,,, masnory 你应该听说过吧。
    xi_lin
        3
    xi_lin  
       2016-07-03 17:59:54 +08:00
    首先和 UI 确认一下想要的是什么效果
    是否是要在不同屏幕上缩放显示?是的话就只能等比写间距了。
    enjoeq
        4
    enjoeq  
    OP
       2016-07-03 23:50:01 +08:00
    @sablib 谢谢,可惜的是我们的这个项目还是 Objective-C 的,这个 Ruler 库是 swift ,估计不太适合我们,不过我会研究看看的。
    enjoeq
        5
    enjoeq  
    OP
       2016-07-03 23:53:31 +08:00
    @TonyYOYO 我所知道的是 masnory 是一个封装了 AutoLayout API 的一个库,用来更方便写 AutoLayout 代码的,不过我真的不知道怎么用 AutoLayout 去适配 iPhone Portrait Mode 下不同设备屏幕大小,用 Aspect Ratio 能控制控件按比例缩放,但是控件之间的距离没办法等比缩放啊,这样控件的位置就会变得奇怪。
    可以更详细的说说怎么用 AutoLayout 解决这个问题吗,谢谢。
    enjoeq
        6
    enjoeq  
    OP
       2016-07-03 23:57:51 +08:00
    @xi_lin 等比写间距是指等比计算控件大小和间距吗?控件大小等比计算还好,连间距也要等比计算的话就会显得很繁杂,而且容易写错,就是不想这样才想问问大家有没有更好的办法😂。
    xi_lin
        7
    xi_lin  
       2016-07-04 13:38:55 +08:00
    @enjoeq 我们是写了个宏来做等比计算,也是比较麻烦
    enjoeq
        8
    enjoeq  
    OP
       2016-07-04 16:13:07 +08:00
    @xi_lin 可以把宏和宏的用法私信给我看看吗?或者给我讲讲宏的写法也可以啊,谢谢。
    kitalphaj
        9
    kitalphaj  
       2016-07-05 12:51:19 +08:00
    间距其实本质上也是控件大小。你放一个 UIView 进去占位置就好了。
    xi_lin
        10
    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)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:17 · PVG 05:17 · LAX 13:17 · JFK 16:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.