1

私のアプリには、ユーザーがタッチして移動できる UIImageView があります。タッチが画像のサイズを変更し始めたときに必要です。このために、このメソッドを実装しました

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

その中でサイズを変更すると、画像はUIPanGestureRecognizerで移動します。

唯一の問題は、タッチを開始するとサイズが変更されることですが、画像が移動すると元のサイズにサイズ変更されます。お手伝いありがとう!

4

2 に答える 2

0

ワークフローは次のようにすることをお勧めします。

  1. touchesBegan では、現在の画像サイズとタッチ位置を記録します
  2. touchesEnded では、終了タッチ位置の値と touchesBegan の記録されたタッチ位置を比較し、2 つの位置の比率で画像サイズを更新します。
于 2012-09-12T10:58:09.420 に答える
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
于 2012-09-12T12:05:01.177 に答える