iOS控件使用之UIImageView

来源:互联网 发布:公司网络监控聊天记录 编辑:程序博客网 时间:2024/06/04 18:42

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 FKViewControllerNSArray* 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.0if(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.0if(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];// 获取正在显示的原图对应的CGImageRefCGImageRef 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
原创粉丝点击