Tôi đang làm việc trên ứng dụng iPhone dựa trên UITabBarController và UIViewControllers cho mỗi trang. Ứng dụng cần để chạy ở chế độ dọc mà thôi, như vậy mỗi điểm điều khiển + ứng dụng đại biểu đi với dòng mã này:Phát hiện xoay vòng theo phong cảnh thủ công
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
Có một quan điểm điều khiển nơi tôi muốn bật lên một UIImageView khi iPhone là rotaed để landscapeleft. Thiết kế của hình ảnh trông ngang, mặc dù chiều rộng và chiều cao là 320x460 (do đó ảnh chân dung của nó).
Làm cách nào để/tôi có thể phát hiện loại xoay vòng theo cách thủ công, chỉ trong bộ điều khiển chế độ xem cụ thể này, với chế độ xoay tự động trên toàn bộ chế độ xem?
Thomas
UPDATE:
Cảm ơn!
tôi thêm listener này trong viewDidLoad:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:)name:UIDeviceOrientationDidChangeNotification object:nil];
các didRotate trông như thế này:
- (void) didRotate:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationLandscapeLeft)
{
//your code here
}
}
Cảm ơn! Tôi đã thêm người nghe này trong chế độ xemDidLoad: [[NSNotificationCenter defaultCenter] addObserver: tự chọn: @selector (didRotate:) tên: UIDeviceOrientationDidChangeNotification object: nil]; các didRotate trông như thế này: - (void) didRotate: (NSNotification *) thông báo {\t \t UIDeviceOrientation định hướng = [[UIDevice currentDevice] hướng]; \t \t if (định hướng == UIDeviceOrientationLandscapeLeft) \t { \t \t // mã của bạn ở đây \t}} –
cải thiện nhỏ, sử dụng UIDeviceOrientationDidChangeNotification liên tục chứ không phải là giá trị chuỗi của nó (đó là @ "UIDeviceOrientationDidChangeNotification") –
Đừng quên tự hủy đăng ký với tư cách người nghe cho sự kiện ... – aroth