我怎样才能将我的UIimage扩展到不同的大小?

时间:2011-05-16 01:41:02

标签: iphone objective-c

我有一个由UIView上的许多子图层组成的图像,然后截取屏幕截图如下:

UIGraphicsBeginImageContext(object.bounds.size);
        [object.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

然后把它放在一个按钮上:

[objectButton setImage:screenShot forState:UIControlStateNormal];

但是图像显示的是它自己的大小,所以如果按钮的大小与图像大小不同,那么我就会遇到不能使图像变大或变小的问题。

如何才能将图像的大小更改为按钮的大小?

3 个答案:

答案 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];