在文件的顶部,我有这个:
#define DEGREES_TO_RADIANS(x) (M_PI * x / 180.0)
在 viewdidload 我有这个:
imageView.layer.anchorPoint = CGPointMake(0.5,0.5);
最后在手势识别器中我有这个:
- (IBAction)handlePan:(UIPanGestureRecognizer *)sender {
CGPoint translation = [sender translationInView:self.view];
xPos += translation.x;
if(xPos > 150) xPos = 150;
if(xPos < -150) xPos = -150;
float rotate = 0;
if(xPos >= 50) {
rotate = (xPos - 50) * 0.025;
} else if(xPos <= -50) {
rotate = (xPos + 50) * 0.025;
}
imageView.transform = CGAffineTransformTranslate(CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(rotate)), (xPos * 0.35), 0);
}
这似乎将完全相同的效果应用于负片(左)和正片(右)。
随着正在旋转的 UIImageView 水平放置在屏幕的中心,并且它的锚点设置为中心,我希望两个方向的最大值都被屏幕边缘平均切断。相反,图像向右走得更远。
左效应(负):
正确效果(正面):