【问题标题】:Setting a background image for iPad and iPhone为 iPad 和 iPhone 设置背景图像
【发布时间】:2014-06-13 04:57:02
【问题描述】:

我刚刚创建了一个我喜欢在我的应用中用作背景的 png 图像。

    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg_tile.png"]];

这是设置该背景的代码。我刚刚注册了 iOS 开发程序,所以现在我可以在我的设备上进行临时测试。我想知道如何“覆盖”这个图像,以便它在 iPad 上很好地光栅化。

原始 photoshop jpg 的尺寸约为 500 高 350 宽,我发现它非常适合作为 iPhone 背景。我听到的高清图像的尺寸是平均的; 1920 高度和 1080 宽度,但我使用的是虚拟框,所以我的屏幕空间有点小。无论如何我如何覆盖 iPad bkg 的图像?

谢谢

【问题讨论】:

标签: ios objective-c


【解决方案1】:

您还应该为 iPad 捆绑图像。现在在运行时您可以检查设备是否是 iPAd,然后您应该相应地加载图像。

使用资产包 (xcassets),您可以为不同的 iOS 设备配置不同的图像,它会在运行时加载正确的图像。

【讨论】:

    【解决方案2】:

    您可以为不同设备重命名图像文件,如下所述,iOS 将自动获取相关图像。

    bg_tile.png - For non ratina iPhone
    bg_tile@2x.png - For ratina iPhone
    bg_tile~ipad.png - For non ratina iPad
    bg_tile@2x~ipad.png - For ratina iPad
    

    如果你的图片足够大,我建议你不要使用

    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg_tile.png"]];
    

    改为使用背景 UIImageView 并设置其图像属性。

    self.view.backgroundImageView = [UIImage imageNamed:@"bg_tile.png"];
    

    【讨论】:

      【解决方案3】:

      您可以使用 [[UIDevice currentDevice] userInterfaceIdiom] 来确定您是在 iPhone/iPod touch 还是 iPad 上运行。

      通常不需要直接确定您是否在视网膜显示器上,因为 UIImage 会在您使用 imageNamed 并将“@2x”附加到您的高分辨率图像文件名时自动处理(请参阅在绘图中支持高分辨率屏幕和 iOS 打印指南)。

      如果你真的需要知道屏幕的分辨率,使用 UIScreen 的 scale 方法。

      +(BOOL)isPad
      {
      #ifdef UI_USER_INTERFACE_IDIOM
          return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
      #endif
          return NO;
      }
      
      +(BOOL)hasRetinaDisplay
      {
          // checks for iPhone 4. will return a false positive on iPads, so use the above function in conjunction with this to determine if it's a 3GS or below, or an iPhone 4.
          if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2)
              return YES;
          else
              return NO;
      }
      

      希望这对你有帮助..

      【讨论】:

        猜你喜欢
        • 2011-06-22
        • 1970-01-01
        • 2023-03-19
        • 2013-09-30
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 2014-11-03
        相关资源
        最近更新 更多