我想将一个小图像添加到另一个主图像,比如角标(Badge)我正在为此编写这段代码,但问题是如果背景图像很小,那么水印就会显示得非常大。请提供任何建议。
[_productImg sd_setImageWithURL:[NSURL URLWithString:imgUrl]
placeholderImage:nil
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
if (image.size.width > 0 && img.isdefaultImage) {
UIImage *watermark = [UIImage imageNamed:@"is_default_big"];
CGFloat scale = image.scale;
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
[watermark drawInRect:CGRectMake(image.size.width - watermark.size.width, 0, watermark.size.width, watermark.size.height)];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
_productImg.image = result;
}
[_spinner stopAnimating];
[_spinner removeFromSuperview];
}];
});
最佳答案
由于您的图像显然有不同的尺寸,但您似乎将它们缩放到(大致)相同的尺寸,因此您需要缩放您的角标(Badge)。
尝试这样的事情:
// Add this line
CGFloat desiredBadgeSize = 0.2; // Badge is 20% of image height
// Change these lines
CGFloat scale = image.size.height / watermark.size.height * desiredBadgeSize;
[watermark drawInRect:CGRectMake(image.size.width - watermark.size.width * scale, 0, watermark.size.width * scale, watermark.size.height * scale)];
上面的代码假定您将图像缩放到设备上的相同高度。
另一种通常更快的方法是将角标(Badge)放在 UIImageView 中,然后将其添加到包含图像的 View 中。这样您仍然拥有原始图像,并且可以在需要时轻松移除角标(Badge)。
关于ios - 一张图片到另一张图片大小问题 ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48237658/