Iphone 坐标为';旋转物镜c时不改变

Iphone 坐标为';旋转物镜c时不改变,iphone,objective-c,catransform3d,Iphone,Objective C,Catransform3d,我正在旋转一个包含各种子视图(UIImageView和UIButtons)的轮子 然而,当我要求它显示每个子视图的每个中心时,它每次都给我相同的值 -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { } -(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { NSSet *allTouches = [event allTo

我正在旋转一个包含各种子视图(UIImageView和UIButtons)的轮子 然而,当我要求它显示每个子视图的每个中心时,它每次都给我相同的值

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {   
}

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    NSSet *allTouches = [event allTouches];

    int len = [allTouches count]-1;

    UITouch *touch =[[allTouches allObjects] objectAtIndex:len];
    CGPoint location = [touch locationInView:[self superview]];
    float theAngle = atan2( location.y-self.center.y, location.x-self.center.x );

    totalRadians = theAngle;

    [self rotateImage:theAngle];

}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
}

-(void) rotateImage:(float)angleRadians{

    self.transform = CGAffineTransformMakeRotation(angleRadians);
    CATransform3D rotatedTransform = self.layer.transform;
    self.layer.transform = rotatedTransform;    
    int count = 0;
    for (UIView *subview in self.subviews)
    {
    count++;    
        //these values are always the same
    NSLog(@"%i %f %f", count, subview.center.x, subview.center.y);
    }
}
有人能告诉我为什么即使在旋转并放置在不同的位置后,这些值也总是相同的


谢谢

若要偏离评论中所说的内容,请在superview范围内表示中心。边界不受旋转影响,{0,0}始终位于视图的左上角

要获得所需的,需要将旋转应用于中心点


rotatedCenter=CGPointApplyAffineTransform(subview.center,self.transform)

将层变换设置为纯旋转变换始终围绕层的当前中心旋转。您似乎没有应用任何平移变换。您期望的是什么行为?因为我正在旋转包含各种组件的imageview。这些组件应该改变它们的协调。我说得通吗?子视图的中心是相对于其超视图的坐标空间表示的。因此,尽管子视图在屏幕空间中移动,但它们不会相对于其父视图移动,除非您显式地对其应用旋转。对于大多数用例,子视图保持其相对位置是有意义的。但是如果超级视图已经旋转,它们的坐标会改变吗?这就是我想要找到的。thnx,换句话说,这将根据已经发生的变换,找到中心的正确坐标,它应该。这也适用于任何变换,不仅仅是旋转。哇,这看起来不错。谢谢最后一个问题。如果我收到的是负数,这是正确的吗?或者我做错了什么,从而产生了一个不正确的结果?否定肯定是可能的,但这并不能得到对象相对于整个页面的坐标,对吗?只是关于它自己