button修改image的大小

button 可以设置为图片,但是如果图片过小,那么不管 button 设置的 frame 大小是多少,都是显示的图片的大小,这样就需要用代码调整图片的大小。

UIImageView则不需要,因为图片会随着 imageview 的大小而变化。

屏幕快照 2015-05-26 14.53.11.png

如图所示,用的图片都是一个图片,设置的都是宽是屏幕大小,高200,从上到下一次为 button 的图片,button 使用放大后的图片,uiimageview 的图片

所以这里说明下怎么调整图片的大小,因为 image 自己不提供这个方法,所以另外写一个方法

【一】代码示例

自定义的类

.h文件:

#import <UIKit/UIKit.h>

@interface UIImage(scale)
-(UIImage*)scaleToSize:(CGSize)size;
@end

.m文件

#import "ImageScale.h"

@implementation UIImage(scale)
-(UIImage*)scaleToSize:(CGSize)size
{
    // 创建一个bitmap的context
    // 并把它设置成为当前正在使用的context
    UIGraphicsBeginImageContext(size);
    // 绘制改变大小的图片
    [self drawInRect:CGRectMake(0, 0, size.width, size.height)];
    // 从当前context中创建一个改变大小后的图片
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    // 使当前的context出堆栈
    UIGraphicsEndImageContext();
    // 返回新的改变大小后的图片
    return scaledImage;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

@end

调用和使用的方法

 UIImage *images1=[UIImage imageNamed:@"img2.png"];
    UIButton *button1=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];
    [button1 setImage:images1 forState:UIControlStateNormal];
    [self.view addSubview:button1];
    
    UIImage *images=[UIImage imageNamed:@"img2.png"];
    UIButton *button=[[UIButton alloc]initWithFrame:CGRectMake(0, 200, [UIScreen mainScreen].bounds.size.width, 200)];
    .bounds.size.width, 200)] forState:UIControlStateNormal];
    [self.view addSubview:button];
    
    UIImageView *views=[[UIImageView alloc]initWithFrame:CGRectMake(0, 500, [UIScreen mainScreen].bounds.size.width, 200)];
    [views setImage:[UIImage imageNamed:@"img2.png"]];
    [self.view addSubview:views];

【二】demo 下载

GitHub下载:https://github.com/DamonHu/HudongImageDemo

GitOsc下载:http://git.oschina.net/DamonHoo/HudongImageDemo

【三】参考文章

http://blog.csdn.net/ldd909/article/details/6570156

iOS UIImage扩展方法(category):放大、旋转、合并UIImage、增加渐变层、添加阴影、调节透明度

Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

2 comments

  1. Juice007

    我遇到了一个图片太大,导致btn的image被拉伸的问题,改了下btn的imageView的contentMode为aspectFit就能正常显示啦~~

    1. 东东
      @Juice007

      是的,就是要么修改图片,要么修改图片的显示样式,这个写的老了,

Leave a Comment