在文件的顶部,我有这个:
#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水平放置在屏幕中央,并且其锚点设置在中心,我希望两个方向上的最大值可以被屏幕边缘平均切断。相反,图像向右移动得更远。
左效果(负面):
正确的效果(正面):
答案 0 :(得分:0)
看起来autolayout会在图像视图旋转并且帧发生变化时更改定位点。