TL; DR如何为Apple Watch准备图像?
Apple Watch有两种分辨率:
38毫米:272x340
42毫米:312x390
如果我有WKInterfaceButton / WKInterfaceImage的图像136x108(上图),我如何确保它在两个手表上都看起来不错?
我已将故事板设置为任意屏幕尺寸,高度设置为"尺寸适合内容"和width设置为"相对于容器
问题: 1)图像的分辨率是否太低(136x108)?我该如何测量高度和宽度?例如手表的高度 - 按钮的高度(如何获得此高度)=?
2)我应该为尺寸宽度和高度属性设置什么?
a)相对于容器适合的尺寸,还是固定的?
3)对于Images.xcassets,每个@ 1x @ 2x和@ 3x所需的分辨率是什么
答案 0 :(得分:2)
您无需找到适用于这两种尺寸的解决方案。大小类功能使您能够分别为每个大小提供单独的布局和图像资源。
回答你的问题:
太小了。准备与手表每种尺寸的显示尺寸完全匹配的图像。
您可以使用相对于容器的宽度但固定高度 - 设置每个尺寸的精确高度。
请勿使用通用图片资源类型。特别使用Apple Watch。然后,您将能够为每种尺寸提供单独的图像。并且只需要@ 2x图像。
答案 1 :(得分:0)
这样可以解决问题:
+ (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,您应该实例化图像并将该宽度和高度传递给该方法。手表看起来不错。