CocoaHeads Rennes #4 : la rotation sur iOS

Post on 28-Jun-2015

810 views 2 download

Tags:

Transcript of CocoaHeads Rennes #4 : la rotation sur iOS

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