cocoaheads rennes #4 : la rotation sur ios
TRANSCRIPT
La r tation sur iOS
Thomas DupontCocoaHeads Rennes
13 octobre 2011
Comment supporter les orientations ?
Project
UIViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation{
return UIInterfaceOrientationIsLandscape(orientation);}
Comment gérer la rotation ?
enum {UIViewAutoresizingNone,UIViewAutoresizingFlexibleLeftMargin,UIViewAutoresizingFlexibleWidth,UIViewAutoresizingFlexibleRightMargin,UIViewAutoresizingFlexibleTopMargin,UIViewAutoresizingFlexibleHeight,UIViewAutoresizingFlexibleBottomMargin
};
UIView
@property (nonatomic) UIViewAutoresizing autoresizingMask
[myView setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin| UIViewAutoresizingFlexibleTopMargin|
UIViewAutoresizingFlexibleRightMargin| UIViewAutoresizingFlexibleBottomMargin)];
UIViewAutoresizing
[myView setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin| UIViewAutoresizingFlexibleBottomMargin)];
UIViewAutoresizing
[myView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleTopMargin|
UIViewAutoresizingFlexibleBottomMargin)];
UIViewAutoresizing
UIViewController
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
- (void)didRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
Comment être prévenu des rotations ?
UIWindow
UIWindowLevelNormalUIWindowLevelAlert
UIWindowLevelStatusBar
makeKeyAndVisible
UIViewController
@property (nonatomic, retain) UIViewController *rootViewController
UIWindow
UIView UIViewController
UIView UIViewController
Démo
Comment gérer manuellementla rotation d’une UIView ?
connaître l’orientation
@property (nonatomic) UIInterfaceOrientation statusBarOrientation
@property (nonatomic, readonly) UIDeviceOrientation orientation
typedef enum {UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
} UIInterfaceOrientation;
typedef enum {UIDeviceOrientationUnknown,UIDeviceOrientationPortrait,UIDeviceOrientationPortraitUpsideDown,UIDeviceOrientationLandscapeLeft,UIDeviceOrientationLandscapeRight,UIDeviceOrientationFaceUp,UIDeviceOrientationFaceDown
} UIDeviceOrientation;
UIWindow
(0, 0)
width
height
UIWindow
(0, 0)
width
height
changement d’orientation
UIApplicationDidChangeStatusBarOrientationNotification
statusBarOrientationAnimationDuration
UIApplicationWillChangeStatusBarOrientationNotification
Démo
Merci