开发者

Rotate UIView based on position in superview

I have a UIImageView that is an arrow image. I added this view to a parent view with a frame of 500x500 dimensions. I want to rotate the UIImageView so that the arrow is always pointing to the center of its parent when the user touches and moves it around.

I was looking into CGAffineTransform and trigonometry rotations, but I'm having trouble getting started. Can anyone provide some insight?

Thanks!

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {    
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self];

    pointerView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pointer.png"]];        
    pointerView.layer.anchorPoint = CGPointMake(0, 0.5);    
    pointerView.center = point;

    [self setPointerRotation];

    [self addSubview:pointerView];
    [pointerView release];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {   开发者_Python百科 
    UITouch *touch = [touches anyObject];   
    CGPoint point = [touch locationInView:self];   

    pointerView.center = point;
    [self setPointerRotation];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [pointerView removeFromSuperview];
    pointerView = nil;
}

- (void)setPointerRotation {
    CGAffineTransform transform = // calculate rotation so that pointerView points to the center of the superview
    pointerView.transform = transform;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜