• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: rotate UI subview (CFAffline Transform)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • Prev by Date: Re: rotate UI subview (CFAffline Transform)
  • Next by Date: Re: How do I temporary retain self, under ARC?
  • Previous by thread: Re: rotate UI subview (CFAffline Transform)
  • Next by thread: Re: [Xcode 6 beta3][Swift] NSDocument addWindowController failing inexplicably
  • Index(es):
    • Date
    • Thread