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