如何围绕它的原点旋转一条线(UIView)

时间:2013-10-31 17:48:23

标签: ios objective-c

我正在尝试围绕它的原点旋转一条线(它只不过是一个UIView)。对于旋转我正在使用CGAffineTransformRotate,但我知道这将围绕它的中心旋转线。要更改旋转点,我正在使用CGAffineTransformTranslate。尽管如此,该线未正确旋转。我究竟做错了什么?这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(300, 400, 300, 3)];
    testView.backgroundColor = [UIColor blueColor];
    [self.view addSubview:testView];

    testView.transform = CGAffineTransformTranslate(testView.transform, -150, 0);
    testView.transform = CGAffineTransformRotate(testView.transform, 45 * M_PI / 180);
}

提前致谢

1 个答案:

答案 0 :(得分:1)

这在我之前发生过,答案并不明显,但很简单。问题是你没有恢复视图的“旋转点”。由于某种原因,这使得旋转不能按照你想要的方式工作。

以下是解决问题所需采取的措施:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(300, 400, 300, 3)];
    testView.backgroundColor = [UIColor blueColor];
    [self.view addSubview:testView];

    testView.transform = CGAffineTransformTranslate(testView.transform, -150, 0);
    testView.transform = CGAffineTransformRotate(testView.transform, 45 * M_PI / 180);

    // Restore the rotation point. This will fix your issue.
    testView.transform = CGAffineTransformTranslate(testView.transform, 150, 0);
}

希望这有帮助!