我有一个UIImageView的子类,其中包含一些手势识别器,我用它来将变换应用到自身。我对平移或缩放没有任何问题,但旋转的变换在设备本身旋转时会引起问题。基本上每次旋转设备都会产生缩放图像的效果......
我认为一切旋转都可能导致旋转变换出现问题,但是有没有人知道这种行为的方法呢?最好能在UIImageView子类中实现的东西?我需要其他兄弟视图来自动调整大小,所以我无法在父视图中禁用“自动调整大小视图”。
以下是负责创建旋转变换的代码,如果它有帮助:
- (void)setUpRotation
{
UIRotationGestureRecognizer *newRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationGesture)];
newRecognizer.delegate = self;
self.rotationRecognizer = newRecognizer;
[self addGestureRecognizer:self.rotationRecognizer];
[newRecognizer release];
self.userInteractionEnabled = YES;
}
- (void)handleRotationGesture
{
// Initial state
if(self.rotationRecognizer.state == UIGestureRecognizerStateEnded)
{
lastRotation = 0.0;
return;
}
CGFloat rotation = 0.0 - (lastRotation - self.rotationRecognizer.rotation);
CGAffineTransform currentTransform = self.transform;
self.transform = CGAffineTransformRotate(currentTransform,rotation);
lastRotation = self.rotationRecognizer.rotation;
}
这是iOS 5.0 btw。