CocoaHeads Rennes #4 : la rotation sur iOS

21
La r tation sur iOS Thomas Dupont CocoaHeads Rennes 13 octobre 2011

Transcript of CocoaHeads Rennes #4 : la rotation sur iOS

Page 1: CocoaHeads Rennes #4 : la rotation sur iOS

La r tation sur iOS

Thomas DupontCocoaHeads Rennes

13 octobre 2011

Page 2: CocoaHeads Rennes #4 : la rotation sur iOS

Comment supporter les orientations ?

Page 3: CocoaHeads Rennes #4 : la rotation sur iOS

Project

Page 4: CocoaHeads Rennes #4 : la rotation sur iOS

UIViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation{

return UIInterfaceOrientationIsLandscape(orientation);}

Page 5: CocoaHeads Rennes #4 : la rotation sur iOS

Comment gérer la rotation ?

Page 6: CocoaHeads Rennes #4 : la rotation sur iOS

enum {UIViewAutoresizingNone,UIViewAutoresizingFlexibleLeftMargin,UIViewAutoresizingFlexibleWidth,UIViewAutoresizingFlexibleRightMargin,UIViewAutoresizingFlexibleTopMargin,UIViewAutoresizingFlexibleHeight,UIViewAutoresizingFlexibleBottomMargin

};

UIView

@property (nonatomic) UIViewAutoresizing autoresizingMask

Page 7: CocoaHeads Rennes #4 : la rotation sur iOS

[myView setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin| UIViewAutoresizingFlexibleTopMargin|

UIViewAutoresizingFlexibleRightMargin| UIViewAutoresizingFlexibleBottomMargin)];

UIViewAutoresizing

Page 8: CocoaHeads Rennes #4 : la rotation sur iOS

[myView setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin| UIViewAutoresizingFlexibleBottomMargin)];

UIViewAutoresizing

Page 9: CocoaHeads Rennes #4 : la rotation sur iOS

[myView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleTopMargin|

UIViewAutoresizingFlexibleBottomMargin)];

UIViewAutoresizing

Page 10: CocoaHeads Rennes #4 : la rotation sur iOS

UIViewController

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

- (void)didRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

Page 11: CocoaHeads Rennes #4 : la rotation sur iOS

Comment être prévenu des rotations ?

Page 12: CocoaHeads Rennes #4 : la rotation sur iOS

UIWindow

UIWindowLevelNormalUIWindowLevelAlert

UIWindowLevelStatusBar

makeKeyAndVisible

Page 13: CocoaHeads Rennes #4 : la rotation sur iOS

UIViewController

@property (nonatomic, retain) UIViewController *rootViewController

UIWindow

UIView UIViewController

UIView UIViewController

Page 14: CocoaHeads Rennes #4 : la rotation sur iOS

Démo

Page 15: CocoaHeads Rennes #4 : la rotation sur iOS

Comment gérer manuellementla rotation d’une UIView ?

Page 16: CocoaHeads Rennes #4 : la rotation sur iOS

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;

Page 17: CocoaHeads Rennes #4 : la rotation sur iOS

UIWindow

(0, 0)

width

height

Page 18: CocoaHeads Rennes #4 : la rotation sur iOS

UIWindow

(0, 0)

width

height

Page 19: CocoaHeads Rennes #4 : la rotation sur iOS

changement d’orientation

UIApplicationDidChangeStatusBarOrientationNotification

statusBarOrientationAnimationDuration

UIApplicationWillChangeStatusBarOrientationNotification

Page 20: CocoaHeads Rennes #4 : la rotation sur iOS

Démo

Page 21: CocoaHeads Rennes #4 : la rotation sur iOS

Merci