如何通过拖动图像视图的右角来调整图像视图的大小和旋转

时间:2012-09-24 07:57:36

标签: ios uiimageview rotation image-resizing uipangesturerecognizer

嗨我有一个要求,我需要通过拖动图像视图的右角来调整图像视图的大小和旋转。

我可以通过拖动它的角来成功调整图像视图的大小,但是当我尝试用单指实现图像视图的调整大小和旋转功能时失败。

任何人都可以指导我达到我的要求。

我添加了以下代码,用于从角落边缘调整图像视图的大小。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
touchStart = [[touches anyObject] locationInView:self];
isResizingLR = (self.bounds.size.width - touchStart.x < kResizeThumbSize && self.bounds.size.height - touchStart.y < kResizeThumbSize);
isResizingUL = (touchStart.x <kResizeThumbSize && touchStart.y <kResizeThumbSize);
isResizingUR = (self.bounds.size.width-touchStart.x < kResizeThumbSize && touchStart.y<kResizeThumbSize);
isResizingLL = (touchStart.x <kResizeThumbSize && self.bounds.size.height -touchStart.y <kResizeThumbSize);

}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint touchPoint = [[touches anyObject] locationInView:self];
CGPoint previous=[[touches anyObject]previousLocationInView:self];

float  deltaWidth = touchPoint.x-previous.x;
float  deltaHeight = touchPoint.y-previous.y;

if (isResizingLR) {
    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y,touchPoint.x + deltaWidth, touchPoint.y + deltaWidth);
}  
if (isResizingUL) {
    self.frame = CGRectMake(self.frame.origin.x + deltaWidth, self.frame.origin.y + deltaHeight, self.frame.size.width - deltaWidth, self.frame.size.height - deltaHeight);
} 
if (isResizingUR) {
    self.frame = CGRectMake(self.frame.origin.x ,self.frame.origin.y + deltaHeight,  self.frame.size.width + deltaWidth, self.frame.size.height - deltaHeight);      
} 
if (isResizingLL) {
    self.frame = CGRectMake(self.frame.origin.x + deltaWidth ,self.frame.origin.y ,  self.frame.size.width - deltaWidth, self.frame.size.height + deltaHeight);   
}

if (!isResizingUL && !isResizingLR && !isResizingUR && !isResizingLL) {
    self.center = CGPointMake(self.center.x + touchPoint.x - touchStart.x,self.center.y + touchPoint.y - touchStart.y);
}

}

2 个答案:

答案 0 :(得分:1)

通过此代码示例Here

调整UIImageView的大小

试试这个......

我希望它会帮助你...

尝试旋转......

self.imgViewForBend.layer.anchorPoint = CGPointMake(0.0,1.0);
self.imgViewForBend.layer.position = CGPointMake(200,300.0);
CGAffineTransform cgaRotateHr = CGAffineTransformMakeRotation(-(3.141/4));
[self.imgViewForBend setTransform:cgaRotateHr];

答案 1 :(得分:0)

没有任何代码,我会想到这样的事情......

触摸开始时,存储您正在编辑的图像的起点和中心点。 (所有相对于图像的superView的点)。

然后比例相对于触摸距离中心点的距离(使用pythagorus)。

此外,您将知道从中心点到原始触摸的线的角度(使用三角法)。您可以根据起始角度和当前角度之间的差异来更改图像的角度。

我还会从移动的触摸中取出逻辑并触摸开始的功能。使用calculateRotation函数和calculateScale函数来帮助。

此刻无法编码。