我有一个由UIView上的许多子图层组成的图像,然后截取屏幕截图如下:
UIGraphicsBeginImageContext(object.bounds.size);
[object.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
然后把它放在一个按钮上:
[objectButton setImage:screenShot forState:UIControlStateNormal];
但是图像显示的是它自己的大小,所以如果按钮的大小与图像大小不同,那么我就会遇到不能使图像变大或变小的问题。
如何才能将图像的大小更改为按钮的大小?
答案 0 :(得分:2)
尝试此类别 -
.h文件 -
@interface UIImage (UIImageAdditions)
- (UIImage*)scaleToSize:(CGSize)size;
@end
.m文件 -
@implementation UIImage (UIImageAdditions)
- (UIImage*)scaleToSize:(CGSize)size {
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0.0, size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, size.width, size.height), self.CGImage);
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
@end
你可以这样称呼它 -
[imageObject scaleToSize:CGSizeMake(weight, height)];
希望有所帮助!
答案 1 :(得分:0)
您可以将UIButton上的contentMode更改为适合缩放。这将调整图像的大小,使其不大于按钮的边界。同时将图像设置为按钮的背景图像而不是图像。
objectButton.contentMode = UIViewContentModeScaleAspectFit;
[objectButton setBackgroundImage:image forStage:UIControlStateNormal];
答案 2 :(得分:0)
尝试这样,
[objectButton setBackgroundImage:screenShot forState:UIControlStateNormal];