views:

61

answers:

1

Hi, I'm having UIImageView, few lables, buttons etc in a view. Currently I have implementation for portrait mode. When orientation of iphone is changed, I just want to rotate only image view. Rest all other controls should not change. How can I implement the rotation of only image view?

+1  A: 

I had to do something very similar recently. What I did was disable auto rotation and then used the device notifications like this:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];

- (void)didRotate:(NSNotification *)notification {  
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
    switch (orientation) {
        case UIDeviceOrientationUnknown:
        case UIDeviceOrientationFaceUp:
        case UIDeviceOrientationFaceDown:
            return;
            break;
    }

    // Do something
}

You will need to handle some situations like quick rotations etc. Let me know if you need more info.

v01d
Thanks for the reply. But needs little clarification. Do I have to create different view class that inherits from ImageView and handle it or I can handle "didRotate" in viewController itself?
Satyam svv
My suggestion would be to handle this in the view controller. Perhaps setup the observer in your viewDidLoad. The notifications will be sent immediately for _any_ orientation changes. So I save the orientation change and set the animation on it's way. If there is another orientation change during the animation I start the animation all over again until there are no changes.
v01d