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)];
    [button setImage:[images scaleToSize:CGSizeMake([UIScreen mainScreen].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、增加渐变层、添加阴影、调节透明度


☟☟可点击下方广告支持一下☟☟

最后修改:1970 年 01 月 01 日
请我喝杯可乐,请随意打赏: ☞已打赏列表