Re: rotate UI subview (CFAffline Transform)
Re: rotate UI subview (CFAffline Transform)
- Subject: Re: rotate UI subview (CFAffline Transform)
- From: Steve Christensen <email@hidden>
- Date: Fri, 18 Jul 2014 07:02:18 -0700
On Jul 18, 2014, at 4:51 AM, 2551 <email@hidden> wrote:
> I have a problem which I can't find anyone else asking after hours of searches through stackexchange and the like.
>
> In a UIView, I'm rotating a subview with a Gesture recognizer that calls this selector:
>
> - (IBAction)rotateShape:(UIRotationGestureRecognizer *)gesture {
> gesture.view.transform = CGAffineTransformMakeRotation(gesture.rotation);
> }
>
> The rotation performs as expected and all is right with the world. However, as soon as I attempt to touch or move the rotated subview again (it also has a pan gesture), it reverts to its original orientation.
No, when you apply a transform to a view, it becomes _the_ transform; it isn't retaining previous translation state. Based on what you've said, it sounds like when you touch/move the object that you're applying a translation transform to the view.
> It seems the original transform values are still being retained and held by the object or by the drawing context (I'm still not quite comfortable with all the graphics theory; indeed, this is my first attempt at trying to unlock its mysteries).
You may already know this but the CFAffineTransformMake*() functions apply a single operation (rotate, scale or translate) to the identity transform. If, for example, you called CGAffineTransformMakeRotation() and then later CGAffineTransformMakeTranslation(), then the rotation will be lost.
> What else do I need to do to ensure the new rotated, orientation "sticks" so that I can move the shape without it reverting to the original orientation?
Keep track of translation and rotation values in your model and then build translated+rotated transforms that reflect the current state of each object.
- (IBAction)rotateShape:(UIRotationGestureRecognizer *)gesture {
modelObject = ...;
modelObject.rotation = gesture.rotation;
gesture.view.transform = [self transformForModelObject:modelObject];
}
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden