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



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

提前致谢

这以前

发生在我身上,答案并不明显,但非常简单。问题是您没有恢复视图的"旋转点"。由于某种原因,这会使旋转无法按您想要的方式工作。

以下是解决问题所必须执行的操作:

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

希望这有帮助!

最新更新