【问题标题】:Pinchgesture not working for small imagesPinchgesture 不适用于小图像
【发布时间】:2013-07-07 23:43:39
【问题描述】:

我正在使用 GestureRecognizer 代理来进行捏合、平移、旋转、长按以获取图像。我使用UIPinchGestureRecognizer 代表进行捏合。

但是,当我捏​​缩放时它没有任何问题。当我缩小某个级别时,图像很小,我无法放大缩小图像。之后,当我应用平移时,当我松开手指时,平移将应用整个视图并且仅应用图像。松开我的手指后,平底锅只应用图像。触摸图像平移后应用于整个视图

代码:

 UIPinchGestureRecognizer *pinchGesture1 = [[UIPinchGestureRecognizer alloc]  initWithTarget:self action:@selector(ahandlePinch1:)];

 [myImageView addGestureRecognizer:pinchGesture1];

-(void)ahandlePinch1:(UIPinchGestureRecognizer*)sender {
    mCurrentScale += [sender scale] - mLastScale;
    mLastScale = [sender scale];

    if (sender.state == UIGestureRecognizerStateEnded)
    {
        mLastScale = 1.0;
    }

    CGAffineTransform currentTransform = CGAffineTransformIdentity;
    CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, mCurrentScale, mCurrentScale);
    myImageView.transform = newTransform;
}

【问题讨论】:

    标签: iphone uiimageview uigesturerecognizer uipinchgesturerecognizer


    【解决方案1】:

    您应该修改您的ahandlePinch1 方法,以便您不会将图像的大小减小到一定数量以下。它几乎肯定会变得如此之小,以至于它无法再检测到两个不同的触摸(捏合手势所必需的)。

    Apple 通常建议允许至少 44x44 pts 作为可触摸区域,因此我建议您不要将图像大小调整到 88x88 以下。

    或者,如果您确实需要您的图像小于这个值,那么您应该将手势识别器添加到一个不同的视图(可能是超级视图),而不是图像本身。

    【讨论】:

    • ...如果您的视图尺寸小于 88x88,只需添加一个不应用转换的条件语句。
    • 这段代码是否正确? if ( [识别器比例] > 2 ) [识别器视图].transform = CGAffineTransformScale([[识别器视图] 变换], [识别器比例],
    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 2014-04-20
    • 2017-06-06
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多