更改UIImageView大小并使用触摸手势移动它

时间:2012-09-12 10:49:43

标签: iphone ios cocoa-touch uiimageview resize

在我的应用程序中,我有一个UIImageView,用户可以触摸和移动。 当触摸开始改变图像的大小时,我需要它。 为此我已经实现了这个方法

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

并在其中更改尺寸,然后使用 UIPanGestureRecognizer 移动图像。

唯一的问题是,当触摸开始时,尺寸会发生变化,但是当图像移动时,它会调整到原始大小。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我建议工作流程应该是:

  1. 在touchesBegan中,记录当前图像大小和触摸位置
  2. 在touchesEnded中,比较touchesBegan的结束触摸位置和记录的触摸位置的值,用两个位置的比例刷新图像大小。

答案 1 :(得分:0)

只需使用touchesMoved移动图片。

@interface TTImageView : UIImageView
{
     CGPoint startLocation;
}
@end

@implementation TTImageView

- (id)init
{
    self = [super init];
    if (self) {
        [self setBackgroundColor:[UIColor redColor]];
        [self setUserInteractionEnabled:YES];
        [self setFrame:CGRectMake(0, 0, 100, 100)];
    }
    return self;
}
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint pt = [[touches anyObject] locationInView:self];
    startLocation = pt;
    [[self superview] bringSubviewToFront:self];

    //change the size of the image
    CGRect frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, 150, 150);
    [self setFrame:frame];
}

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

{
    CGPoint pt = [[touches anyObject] locationInView:self];
    CGRect frame = [self frame];
    frame.origin.x += pt.x - startLocation.x;
    frame.origin.y += pt.y - startLocation.y;
    [self setFrame:frame];

}
@end