【问题标题】:Apple watch image asset resolutionApple watch 图片资源解析
【发布时间】:2015-02-12 10:30:27
【问题描述】:

TL;DR 如何为 Apple Watch 准备图像?

Apple Watch 有 2 种分辨率:

  1. 38 毫米:272x340

  2. 42 毫米:312x390

如果我有一张 136x108(上图)的 WKInterfaceButton/WKInterfaceImage 图像,我如何确保它在两块手表上看起来都不错?

我已将情节提要设置为任何屏幕尺寸,高度设置为“适合内容的大小”,宽度设置为“相对于容器”

问题: 1)图像的分辨率是否太低(136x108)?我应该如何测量高度和宽度?例如手表的高度 - 按钮的高度(如何得到这个高度)=?

2) 我应该为 size width 和 height 属性设置什么?

a) 适合的尺寸,相对于容器,还是固定的?

3) 对于 Images.xcassets,@1x @2x 和 @3x 需要的分辨率是多少

【问题讨论】:

    标签: storyboard resolution apple-watch


    【解决方案1】:

    您不必找到适用于两种尺寸的解决方案。尺寸类功能使您能够分别为每种尺寸提供单独的布局和图像资源。

    回答您的问题:

    1. 它太小了。准备与每种尺寸手表的显示尺寸完全匹配的图像。

    2. 您可以使用相对于容器的宽度但固定的高度 - 为每个尺寸设置精确的高度。

    3. 不要使用通用图像资产类型。专门使用 Apple Watch。然后,您将能够为每种尺寸提供单独的图像。并且只需要@2x 图像。

    【讨论】:

    • x2资产,好像只给IB?有谁知道它是否也被复制到手表上?它应该是什么尺寸? @2x,但匹配什么表盘? (好像没关系,只要我坚持就好。)
    • @Gatada :您需要更改此图像的设置以允许每个表盘使用单独的图像,而不是“通用”图像。上面显示的屏幕截图(在原始问题中)并非专门用于手表应用程序使用。确保在 IB 中检查正确的设备类型。
    【解决方案2】:

    这样就可以了:

    + (UIImage*) resizeImage:(UIImage*)original withWidth:(float)newWidth withHeight:(float)newHeight{
        UIImage * originalScaled = [UIImage imageWithCGImage:original.CGImage scale:[UIScreen mainScreen].scale orientation:original.imageOrientation];
    
        CGSize newSize = CGSizeMake(newWidth, newHeight);
    
        UIGraphicsBeginImageContextWithOptions(newSize, // context size
                                               NO,      // opaque?
                                               0);      // image scale. 0 means "device screen scale"
    
        CGContextRef imageContext = UIGraphicsGetCurrentContext();
        CGContextSetInterpolationQuality(imageContext, kCGInterpolationHigh);
        [originalScaled drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
        UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
    }
    

    您的图像应该是高分辨率的,因为将其转换为视网膜图像会使其更小。您正在通过这样做使其成为视网膜:

    scale:[UIScreen mainScreen].scale
    

    因此,如果您的图像是 136x108,您应该实例化该图像并将该宽度和高度传递给该方法。戴在手表上会很好看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多