1

我正在尝试围绕它的原点旋转一条线(只不过是一个 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);
}

提前致谢

4

1 回答 1

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);
}

希望这可以帮助!

于 2013-10-31T17:55:21.487 回答