根据屏幕上的x位置逐步旋转UIView

时间:2013-09-12 22:13:34

标签: ios uiview uiimageview rotatetransform

我想使用UIImageView在iPhone视图的长度范围内将imageView.transform = CGAffineTransformMakeRotation(degrees * M_PI/180);旋转90度,并且想知道如何在视图被拖动时实现此功能用户(因此,如果向右拖动视图,也可以“向后”旋转)。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:1)

关于移动视图,您可以通过更新其frame属性来实现.-

view.frame = CGRectMake(view.frame.origin.x + xOffset, view.frame.origin.y, view.frame.size.width, view.frame.size.height);

您还可以添加并observer收听view frame次更改.-

[view addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionOld context:NULL];

在这里,您基本上要求在对象frame的属性view发生变化时收到通知。您可以处理实现以下方法的通知.-

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if([keyPath isEqualToString:@"frame"]) {
        // Change object rotation depending on frame.origin.x
    }
}

你必须做一些数学来计算基于x位置的旋转。另外,我想沿着它的中心旋转视图有点棘手,也许你会发现下面的帖子很有用.-

http://www.informit.com/blogs/blog.aspx?uk=Ask-Big-Nerd-Ranch-Rotating-an-iPhone-View-Around-a-Point

问题是,你不必担心无论你在哪里平移,因为视图轮换只会在每次更改时根据其位置进行更新。

希望有所帮助:)