ios - 同时支持iPad和iPhone的应用怎么做?
高洛峰
高洛峰 2017-04-17 11:30:14
[iOS讨论组]

关于同时支持iPad和iPhone我有两个问题

  1. 怎么判断当前设备是iPad还是iPhone,哪种方法比较好
  2. 对于不同的设备,怎么去实现不同的布局和样式,我的应用不是简单的哪种等比例放大
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
怪我咯

1.判断,我是定义了一个宏

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

2.不同的布局,如果用xib的话,单独定义ipad的xib,初始化的时候判断,调去相应xib,没用xib的话,变化又很大,那最好单独为iPad写一个viewcontroller了。

PHPz

当你需要支持横竖屏时,放弃用IB吧,那样会让你的代码更加混乱。
最近参与一个应用的开发,需要兼容苹果各种设备:
1.当你需要判断是ipad还是iphone时,上面兄弟已经给了方法:

  • define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

2.当你判断是iphone后,但想知道是4还是5时,可以根据长宽判断:

inline bool isPhone_5()
{
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    if (screenSize.width == 568.0f || screenSize.height == 568.0f)
    {
        return true;
    }
    else
    {
        return false;
    }
}

你可能会说,ipad中mainScreen的size都是一样的,那你怎么办呢,我们可以加入scale进行判断:

inline bool isPad_3()
{
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    CGFloat scale = [[UIScreen mainScreen] scale];
    if ((screenSize.width == 1024.0f || screenSize.height == 1024.0f)&& scale == 2)
    {
        return true;
    }
    else
    {
        return false;
    }
}

现在可以判断当前运行的是什么设备,那就根据不同的设备加载不同的xib或者用代码实现不同的布局。

ringa_lee

为不同的设备写不同的controller,共用网络层、持久化等基础类。在applicationDidFinishLauching时判断设备类型,为不同的设备初始化不同的controller,赋值给window.rootViewController

高洛峰

设计两套界面,在程序里判断设备类型,再调用对应的界面。

PHP中文网

用HTML5,自适应界面

高洛峰

布局的话有一个技巧 使用比例放大

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号