Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rotate (angle) a UIView, using User Defined Runtime Attributes

Is it possible to rotate a UIView or UIImageView, say 10 or 15 degrees,

actually using User Defined Runtime Attributes?

Or can it only be done in code?

(Note .. I mention "angle" and "by degrees" for the sake of google; it can get mixed-up with the idea of "rotating" for device orientation change.)


Alternately, could you perhaps subclass UIView in such a way that, a User Defined Runtime Attribute would be exposed, which does just this? (I'm rusty :/ )

like image 837
Fattie Avatar asked Aug 15 '15 17:08

Fattie


2 Answers

You can use layer.transform.rotation.z key path for UIView object.
Value has to be set in radians:

enter image description here

Result:

enter image description here

All transformation key paths are presented in Apple documentation.

like image 88
Vlad Papko Avatar answered Oct 22 '22 22:10

Vlad Papko


In extension to this answer How to access User Defined Runtime Attribute from the 'sender' object?, you can retrieve the runtime value as an NSNumber in degrees, and then perform the rotation. Trigger the IBAction in interface builder when you want the rotation to occur.

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)

@interface RTFRotatingView : UIView
@end

@implementation RTFRotatingView

- (IBAction)performRotation:(UIControl *)sender {
    if ([sender respondsToSelector:@selector(keyName)]) {
        NSNumber *degrees = [sender valueForKey:@"keyName"];
        CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(degrees.doubleValue));
        self.transform = rotateTransform;
    }
}

@end
like image 4
max_ Avatar answered Oct 22 '22 20:10

max_