在缩放后,ImageView Rotation表现得很奇怪

时间:2013-02-23 06:56:22

标签: iphone ios objective-c uigesturerecognizer uislider

我有一个UISlider用于缩放imageView(而不是UIPinchGesture)而我正在使用UIRotationGesture,它们都可以独立工作。无需旋转即可缩放手势很好!但是一旦我执行旋转并且它们放大或缩小imageview,它就会变得很奇怪,因为它会失去旋转比例。(这就是我猜的!) 我该如何解决这个问题?

我很不高兴这个数学的东西挣扎着这几天,我搜索了论坛无法找到解决方案。请帮助我:)。

对于缩放 :(这里我不处理变换,因为我不确定)

-(void)scale:(UISlider *)sender
{
      float sliderValue = [sender value];
    CGRect newFrame = placeRing.frame;
    newFrame.size = CGSizeMake(sliderValue, sliderValue);
    placeRing.frame = newFrame;
}

轮换

- (void)twoFingersRotate:(UIRotationGestureRecognizer *)recognizer
{
    isRotated = TRUE;
    if ([recognizer state] == UIGestureRecognizerStateBegan || [recognizer state] == UIGestureRecognizerStateChanged) {
         rotation= recognizer.rotation;
    rotatedTransform = CGAffineTransformRotate([placeRing transform], [recognizer rotation]);
        placeRing.transform = rotatedTransform;
       [recognizer setRotation:0];
    }

   }

1 个答案:

答案 0 :(得分:1)

旋转应用变换,该变量使您用于调整视图大小的帧属性无效。使用边界和中心属性进行缩放。

请参阅:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816

中的警告框
-(void)scale:(UISlider *)sender
{
    float sliderValue = [sender value];
    placeRing.bounds = CGRectMake(0, 0, sliderValue, sliderValue);
}