Determining Device Orientation
Apple provide an easy way of determining the device orientation, a
call to UIDevice will return the
current orientation of the device:
UIDevice *device = [UIDevice currentDevice]; UIDeviceOrientation orientation = device.orientation;
This call will return a UIDeviceOrientation that can be: UIDeviceOrientationUnknown, UIDeviceOrientationPortrait, UIDeviceOrientationPortraitUpsideDown, UIDeviceOrientationLandscapeLeft, UIDeviceOrientationLandscapeRight or UIDeviceOrientationFaceUp. The sensor underlying
this call is the accelerometer, and you’ll see later in this chapter how
to retrieve the device orientation directly from the raw accelerometer
readings.
Warning
As of the time of writing under iOS 4.3 the device does not
correctly report a proper orientation when your application is first
launched, with UIDevice returning
null when queried.
Lets go ahead and modify the Accelerometer application to display the device orientation. Click on the AccelerometerViewController.h interface file to open it in the Standard Editor and add the following code, highlighted below, to the class interface:
@interface AccelerometerViewController :
UIViewController <UIAccelerometerDelegate> {
IBOutlet UILabel *xLabel;
IBOutlet UILabel *yLabel;
IBOutlet UILabel *zLabel;
IBOutlet UIProgressView *xBar;
IBOutlet UIProgressView *yBar;
IBOutlet UIProgressView *zBar;
IBOutlet UILabel *orientationLabel;
UIAccelerometer *accelerometer;
}
- (NSString *)stringFromOrientation:(UIDeviceOrientation) ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access