在我的应用程序中,我有一个 UIImageView 用户可以触摸和移动。当触摸开始改变图像的大小时,我需要它。为此我实现了这个方法
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
并在其中更改大小,然后图像使用UIPanGestureRecognizer移动。
唯一的问题是,当触摸开始时,尺寸会发生变化,但是当图像移动时,它会调整为原始尺寸。感谢您的帮助!
在我的应用程序中,我有一个 UIImageView 用户可以触摸和移动。当触摸开始改变图像的大小时,我需要它。为此我实现了这个方法
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
并在其中更改大小,然后图像使用UIPanGestureRecognizer移动。
唯一的问题是,当触摸开始时,尺寸会发生变化,但是当图像移动时,它会调整为原始尺寸。感谢您的帮助!
只需使用 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
我建议工作流程应该是: