代码之家  ›  专栏  ›  技术社区  ›  hpique

iPhone中特定于设备的资源

  •  6
  • hpique  · 技术社区  · 15 年前

    根据 iOS Reference Library :

    在iOS 4.0及更高版本中,这是可能的 将单个资源文件标记为 仅在特定类型的 装置。

    这是否意味着,如果您正在为3.x设备创建一个通用应用程序,尤其是3.2 iPad,那么您不能将特定于设备的资源与 ~ipad ~iphone 修复?

    UIImage* anImage;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        anImage = [UIImage imageNamed:@"MyImage-iPad.png"];
    } else {
        anImage = [UIImage imageNamed:@"MyImage-iPhone.png"];
    }  
    

    还有什么需要考虑的吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Michal    15 年前

    是的,你说得对,这项功能在当前的ipad-iOS 3.2上不起作用。

    作为解决方法,我在uiimage中创建了一个类别,因此我可以像 anImage = [UIImage mbImageNamed:@"MyImage.png"] . Category方法只需将“~ipad”放在ipad后缀之前-代码与您的代码类似。

    另一个丑陋的事情是uiwindowcontrollers不根据设备加载xib文件。我已经为所有窗口控制器创建了一个基类,并加载了特定于iPad的XIB:

    @implementation MBPadAwareWindowController
    - (id)init
    {
        NSString *className = NSStringFromClass([self class]);
        NSString *nibName = UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad ? className : [className stringByAppendingFormat:@"-iPad"];
        return [self initWithNibName:nibName bundle:nil];
    }
    @end
    
    推荐文章