滚动时旋转视图

时间:2011-07-30 13:29:06

标签: objective-c scroll rotation

非常简单的问题:

我有一个ScrollView和一个ImageView。对于每个滚动的像素,ImageView应旋转一定的度数。

任何想法如何做到这一点? 提前致谢

3 个答案:

答案 0 :(得分:1)

实施UIScrollViewDelegate并使用仿射变换旋转。

#import <QuartzCore/QuartzCore.h>

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGPoint offset = scrollView.contentOffset;
    CGFloat rotateDegrees = offset.y;
    CGFloat rotateRadians = rotateDegrees * (M_PI / 180);
    _myImage.layer.affineTransform = CGAffineTransformMakeRotation(rotateRadians);
}

要重置循环,请使用_myImage.layer.affineTransform = CGAffineTransformIdentity

答案 1 :(得分:0)

为滚动视图指定delegate并实施-scrollViewDidScroll:方法。每次滚动视图移动时都会调用此方法。在该方法中,获取滚动视图的contentOffset,并将其与某个已保存的初始状态进行比较。这样可以获得滚动的像素数/点数。

计算出您想要将图像旋转多少,并使用CGAffineTransformMakeRotationdocs)创建旋转变换,并将其指定给图像视图的transform属性。

答案 2 :(得分:0)

垂直滚动和Swift 5:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let topOffset = scrollView.contentOffset.y
    let angle = -topOffset * 2 * CGFloat(Double.pi / 180)
    self.myImageView.transform = CGAffineTransform(rotationAngle: angle)
}

是的,不要忘记在viewDidLoad中这样做:

self.scrollView.delegate = self