【问题标题】:Making universal build for iphone application with xcode 4.51使用 xcode 4.51 为 iphone 应用程序进行通用构建
【发布时间】:2012-11-15 22:08:13
【问题描述】:

我有一个旧项目,它为每个 UIViewControler 使用 XIB。那是为 I Phone 设计的,但现在我想用通用版本制作该项目,该项目适用于 Iphone 和 IPad 一样的墙。问题是当我更改将类型构建为 Universal 并使用类似

的编码
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
    {
 // ipad coordinates
    }
else
{
 //iphone coordinates
}

这在 iphone 和 ipad 上显示是正确的,但在 ipad 上,按钮不会在整个按钮上发生点击事件,而只是在按钮的一小部分上发生。虽然我没有加载 Nib,但它在内部采用了装箱的 iphone xib 文件和我认为这就是为什么它的按钮行为不符合 ipad 视图。我很困惑我应该做什么?如何为 Ipad 制作 XIB 的副本并根据设备加载它们。这里要提到的是,我没有从我的代码中加载任何笔尖,而是在内部调用它。请帮忙

【问题讨论】:

    标签: iphone ipad uiviewcontroller xib universal


    【解决方案1】:

    对于universal 应用程序,您可以制作 2 xib
    1 - > yourView_iPhone
    2 - > yourView_iPad

    并根据你的idiom 加载每个xib

    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
    {
        yourView  *obj = [[yourView alloc]initWithNibName:@"yourView_iPad " bundle:nil];
    
        // ipad coordinates
    }
    else
    {
        yourView  *obj = [[yourView alloc]initWithNibName:@"yourView_iPhone " bundle:nil];
    
        //iphone coordinates
    }
    

    【讨论】:

    • 实际上我知道这一点,但问题是旧代码不会从代码中加载任何 nib,但它使用 initWithNibNmae:nil 并且有关联的 iphone xib。我希望只有- if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) { yourView *obj = [[yourView alloc]initWithNibName:@"yourView_iPad " bundle:nil]; // ipad 坐标 } 将起作用,并且在其他部分旧代码将像以前一样工作。让我试试这个。谢谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多