2013-10-31 45 views
1

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

- (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

这种情况以前也发生在我身上,答案不是很明显,但它是非常简单的。问题是你没有恢复视图的“旋转点”。出于某种原因,这会导致旋转不能按照您想要的方式工作。

这里是你必须做的来解决这个问题是什么:

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

希望这有助于!

+0

它确实有帮助,非常感谢! – ocr66