ios 图片旋转放大加移动

今天这更有点迟了,让大家久等了。哈哈,今天好玩的又来了,我们来玩一玩,怎么把一张照片,旋转放大加移动。很期待吧,那么事不宜迟我们来实现它们。

说到这些功能,在ios中实现无非就是手势触摸功能,加上计算偏移,算出坐标。就ok了。非常的简单。

我们新建一个工程

#import "ViewController.h"

@interface ViewController ()<UIGestureRecognizerDelegate>

{

UIImageView *_imageView;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];

[self
createImageView];

[self
createPinchGesture];

[self
createRotataeGesture];

//    [self createPanGesture];

}

//创建缩放手势

-(void)createPinchGesture

{

UIPinchGestureRecognizer *pinchGes  =[[UIPinchGestureRecognizer
alloc]init];

pinchGes .delegate =
self;

[pinchGes addTarget:self
action:@selector(pinchGes:)];

[_imageView
addGestureRecognizer:pinchGes];

}

-(void)pinchGes:(UIPinchGestureRecognizer *)ges

{

//比列

CGFloat scale = ges.scale;

//改变视图比列

ges.view.transform =
CGAffineTransformScale(ges.view.transform, scale, scale);

//比列为1

ges.scale =
1;

}

//创建旋转手势

-(void)createRotataeGesture

{

UIRotationGestureRecognizer *rotationGes = [[UIRotationGestureRecognizer
alloc]init];

rotationGes.delegate =
self;

[rotationGes addTarget:self
action:@selector(rotGes:)];

[_imageView
addGestureRecognizer:rotationGes];

}

-(void)rotGes:(UIRotationGestureRecognizer *)ges

{

ges.view.transform =
CGAffineTransformRotate(ges.view.transform, ges.rotation);

ges.rotation =
0;

}

-(void)createImageView

{

UIImageView *imageView = [[UIImageView
alloc]init];

imageView.frame =
CGRectMake(30,
60, 330,
500);

imageView.image = [UIImage
imageNamed:@"webwxgetmsgimg.jpg"];

imageView.userInteractionEnabled =
YES;

[self.view
addSubview:imageView];

_imageView = imageView;

}

//计算偏移量移动图片

//第一种计算方式

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

[[self
class] cancelPreviousPerformRequestsWithTarget:self];

//取到当前触摸对象

UITouch *touch = [touches
anyObject];

//当前位置

CGPoint point = [touch
locationInView:self.view];

//之前的位置

CGPoint prePoint = [touch
previousLocationInView:self.view];

//计算两次点击的偏移量

CGPoint trans =
CGPointMake(point.x - prePoint.x, point.y - prePoint.y);

//修改imageview的结构(imageview的中心点
赋给center ,就是坐标的变化)

CGPoint center =
_imageView.center;

//把计算出来的偏移量,就是imagview的x轴加上算出来的偏移量,如是y轴不变,那就是0,不用加

_imageView.center =
CGPointMake(center.x + trans.x, center.y+ trans.y);

//这个是点击事件,因为都已经经过准确的计算,每次都有精确的偏移量所以不需要清理上次的偏移量

}

//第2种计算方式

//-(void)createPanGesture

//{

//    UIPanGestureRecognizer *panGse = [[UIPanGestureRecognizer alloc]init];

//

//    panGse.delegate = self;

//

//    [panGse addTarget:self action:@selector(panGes1:)];

//    [_imageView addGestureRecognizer:panGse];

//}

//-(void)panGes1:(UIPanGestureRecognizer *)ges

//{

//    CGPoint point = [ges translationInView:ges.view];

//

//    ges.view.transform = CGAffineTransformTranslate(ges.view.transform, point.x, point.y);

//

//    //偏移量清零(这个事手势,如果每次手势调用都不清理会自动累加到下次,造成不精确,所以每次都要清理上次的偏移量,重新计算下次的,保证精确)这个没有经过准确的计算

////就是回到原先位置,然后从新计算,不然会累积到下次来

//    [ges setTranslation:CGPointZero inView:ges.view];

//

//

//}

//和其他手势一起进行

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer
*)otherGestureRecognizer

{

return
YES;

}

@end

没错,这就是本公子了,哈哈。今天到此结束,大年30休息,(提前说下)就不更了,祝大家过个好年。

时间: 2024-11-10 07:44:49

ios 图片旋转放大加移动的相关文章

iOS图片上加标签或者水印

直接贴代码吧 UIImage+Text.h #import <UIKit/UIKit.h> @interface UIImage (Text) - (UIImage*)addText:(NSString*)text1 XPos:(int)xpos YPos:(int)ypos fontName:(NSString*)fontName fontSize:(CGFloat)fontSize fontColor:(UIColor*)fontColor; @end UIImage+Text.m #im

iOS图片加载速度极限优化—FastImageCache解析

本文转载至 http://blog.cnbang.net/tech/2578/ FastImageCache是Path团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的. 优化点 iOS从磁盘加载一张图片,使用UIImageVIew显示在屏幕上,需要经过以下步骤: 从磁盘拷贝数据到内核缓冲区 从内核缓冲区复制数据到用户空间 生成UIImageView,把图像数据赋值给UIImageView 如果图像数据为未解码的PNG/JPG,解码为位图数据

【iOS】网络加载图片缓存与SDWebImage

加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异步的.(自己开线程去下载) *普通为模型增加UIImage属性的方法做的是内存缓存(下次启动还需要从网络重新加载), 而要做本地缓存的话,还要自己手动存储网络上下载的图片. *为了加快访问, 还需要自己去弄缓存.(内存缓存或者本地缓存) *当图片没有下载完成时,还要设置占位图片. 以下代码用NSOp

iOS图片加载到内存中占用内存情况

我的测试结果: 图片占用内存   图片尺寸           .png文件大小 1MB              512*512          316KB 4MB              1024*1024      940KB 16MB            2048*2048      2.5MB 1.11MB         512*568 693KB          320*568          186KB 2.773MB       640*1136        664

iOS UITableview 图片懒加载demo

1.https://developer.apple.com/library/ios/samplecode/LazyTableImages/Introduction/Intro.html 这是苹果的官方demo,用itunes的应用列表为例,讲述了图片lazy load的思想. 主要思想是,当UITableView处于停止状态时,查找当前视图中的cell,并开始下载icon,下载完成后加载到页面上. 2.可以直接使用第三方加载网络图片的库,SDWebImage,https://github.com

ios UITableView 异步加载图片并防止错位

UITableView 重用 UITableViewCell 并异步加载图片时会出现图片错乱的情况 对错位原因不明白的同学请参考我的另外一篇随笔:http://www.cnblogs.com/lesliefang/p/3619223.html . 当然大多数情况下可以用 SDWebImage, 这个库功能强大,封装的很好.但自己重头来写可能对问题理解的更深. SDWebImage 有点复杂,很多人也会参考一下封装出一套适合自己的类库. 基本思路如下: 1 扩展(category) UIImage

iOS 图片加载框架-SDWebImage 解读

前段时间,美团开源了mpvue这个项目,使得我们又多了一种用来开发小程序的框架选项.由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一致的(某些功能由于受限于小程序环境本身的原因而不能使用),这给使用过Vue开发Web应用的前端开发者提供了极低的切换门槛来开发小程序. iOS 图片加载框架-SDWebImage 解读如果之前还未曾用过Vue这个框架的话,建议你可以 加我们QQ群668041364,一起交流学习 起手式:必要的开发环

ios图片拉伸两种方法

ios图片拉伸两种方法 UIImage *image = [UIImage imageNamed:@"qq"]; 第一种: // 左端盖宽度 NSInteger leftCapWidth = image.size.width * 0.5f; // 顶端盖高度 NSInteger topCapHeight = image.size.height * 0.5f; // 重新赋值 image = [image stretchableImageWithLeftCapWidth:leftCapW

IOS 图片轮播实现原理 (三图)

IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会浪费内存,影响性能. 因此我们要采取适当地方法来实现图片的轮播. 下面我们只是简单的介绍很多方法中的一种简单的实现原理. 一 二 三 四 五 六 七