iOS控件使用之UIImageView

1、.h

#import <UIKit/UIKit.h>

@interface FKViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *add;
@property (strong, nonatomic) IBOutlet UIButton *reduce;
@property (strong, nonatomic) IBOutlet UIImageView *iv;
@property (strong, nonatomic) IBOutlet UIImageView *iv2;
- (IBAction)plus:(id)sender;
- (IBAction)minus:(id)sender;
- (IBAction)next:(id)sender;
@end

2、.m

#import "FKViewController.h"

@interface FKViewController ()

@end

@implementation FKViewController
NSArray* images;
int curImage;
CGFloat alpha;
- (void)viewDidLoad
{
	[super viewDidLoad];
	curImage = 0;
	alpha = 1.0;
	images = [NSArray arrayWithObjects:@"lijiang.jpg",
		@"qiao.jpg", @"xiangbi.jpg"
		, @"shui.jpg" , @"shuangta.jpg" , nil];
	// 创建一个轻击的手势检测器
	UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
		initWithTarget:self action:@selector(clicked:)];
	// 启用iv控件的用户交互,从而允许该控件能响应用户手势
	self.iv.userInteractionEnabled = YES;
	// 为UIImageView添加手势检测器
	[self.iv addGestureRecognizer:singleTap];
}

- (void)didReceiveMemoryWarning
{
	[super didReceiveMemoryWarning];
}

- (IBAction)plus:(id)sender {
	alpha += 0.02;
	// 如果透明度已经大于或等于1.0,将透明度设置为1.0
	if(alpha >= 1.0)
	{
		alpha = 1.0;
        [sender setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
    }
	// 设置iv控件的透明度。
	self.iv.alpha = alpha;	
}

- (IBAction)minus:(id)sender {
	alpha -= 0.02;
	// 如果透明度已经小于或等于0.0,将透明度设置为0.0
	if(alpha <= 0.0)
	{
        [sender setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
		alpha = 0.0;
	}
	// 设置iv控件的透明度。
	self.iv.alpha = alpha;
}

- (IBAction)next:(id)sender {
	// 控制iv的image显示images数组中的下一张图片
	self.iv.image = [UIImage imageNamed:
		[images objectAtIndex:(++curImage % images.count)]];
}

- (void) clicked:(UIGestureRecognizer *)gestureRecognizer
{
	// 获取正在显示的原始位图
	UIImage* srcImage = self.iv.image;
	// 获取用户手指在iv控件上的触碰点
	CGPoint pt = [gestureRecognizer locationInView: self.iv];
	// 获取正在显示的原图对应的CGImageRef
	CGImageRef sourceImageRef = [srcImage CGImage];
	// 获取图片实际大小与第一个UIImageView的缩放比例
	CGFloat scale = srcImage.size.width / 320;
	// 将iv控件上触碰点的左边换算成原始图片上的位置
	CGFloat x = pt.x * scale;
	CGFloat y = pt.y * scale;
	if(x + 120 > srcImage.size.width)
	{
		x = srcImage.size.width - 140;
	}
	if(y + 120 > srcImage.size.height)
	{
		y = srcImage.size.height - 140;
	}
	// 调用CGImageCreateWithImageInRect函数获取sourceImageRef中
	// 指定区域的图片
	CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef
		, CGRectMake(x, y, 140, 140));
	// 让iv2控件显示newImageRef对应的图片
	self.iv2.image = [UIImage imageWithCGImage:newImageRef];
}
@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值