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