1ピクセルの境界線は、レイヤーのコンテンツ(!)のエッジを滑らかにします。
- (UIImage *)drawAntiAliased:(UIImage *)image
{
const int B = 1; // Border width (anti-aliasing)
// Size of the output image
CGSize newImageSize = CGSizeMake(image.size.width + 2 * B, image.size.height + 2 * B);
UIGraphicsBeginImageContextWithOptions(newImageSize, NO, 0);
// Draw image with edge anti-aliasing
[image drawInRect:(CGRect){B, B, image.size}];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
レイヤーの境界線プロパティを使用する場合、境界線はレイヤーのコンテンツの一部ではなく、スムージングの影響を受けないため、これは機能しなくなります。
shouldRasterize
一方、設定はコンテンツと境界線の両方に影響します。