我有一個VC,用戶可以拍攝照片或從他們的庫中選擇一張照片。基於照片方向設置自動旋轉和首選方向
拍攝/選擇照片後,它將被傳遞到下一個VC上的UIImageView
。
我想顯示這個視圖控制器,只在圖片在的方向。因此,如果用戶在左側橫向拍攝照片(一旦他們選擇「使用」),則下一個視圖控制器應該在橫向上加載該UIImageView
中的該圖像。如果他們以縱向拍攝圖像,視圖控制器將以縱向加載。一旦VC以正確的方向加載,它就不應該移動(再旋轉)。
這是我到目前爲止已經試過,但不能讓它工作,我如何期望:
#pragma mark -
#pragma mark - Auto Rotation Overrides
- (BOOL)shouldAutorotate {
if (self.photoImage != NULL) {
// Check that photoImage has an image
if (self.photoImage.imageOrientation == 1 || self.photoImage.imageOrientation == 0) {
// Landscape left = 0, Landscape rigt = 1
return YES;
} else {
// Portrait normal = 3, portait upside down = 2
return NO;
}
}
// Fallback to portrait
return NO;
}
-(NSUInteger)supportedInterfaceOrientations {
if (self.photoImage != NULL) {
// Check that photoImage has an image
if (self.photoImage.imageOrientation == 0) {
return UIInterfaceOrientationMaskLandscapeLeft;
} else if (self.photoImage.imageOrientation == 1) {
return UIInterfaceOrientationMaskLandscapeRight;
} else {
return UIInterfaceOrientationMaskPortrait;
}
}
// Fallback to Portrait
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
if (self.photoImage != NULL) {
// Check that photoImage has an image
if (self.photoImage.imageOrientation == 0) {
return UIInterfaceOrientationLandscapeLeft;
} else if (self.photoImage.imageOrientation == 1) {
return UIInterfaceOrientationLandscapeRight;
} else {
return UIInterfaceOrientationPortrait;
}
}
// Fallback to Portrait
return UIInterfaceOrientationPortrait;
}
----- -----編輯
由於shouldAutoRotate
不叫直到設備實際旋轉,我怎麼讓它自動在viewDidLoad基於圖像方向改變方向。我看到supportInterfaceOrientations
方法被調用,只有一個風景被返回,但不會立即移動視圖...?
----- ----- EDIT2
是否在iOS6的preferredInterfaceOrientationForPresentation
工作嗎?我可以設置我的導航控制器子類來查看self.topViewControllers preferredInterfaceOrientationForPresentation
,但是這似乎意味着每個topViewController都需要使用此方法。理想情況下,我想要設置子類以說: 如果topViewController對preferredInterfaceOrientationForPresentation
有響應,則使用其他縱向/默認值。這可以做到嗎?
如果是這樣,我當然可以更新preferredInterfaceOrientationForPresentation
這將加載該VC在正確的方向,然後shouldAutoRotate
將控制它不會被轉回到另一個方向?
謝謝,是的,我正在使用導航欄。我想這應該應用在viewDidAppear基於我有的圖像方向的if語句。 – StuartM
viewWillAppear,viewDidLoad或viewDidAppear應該取決於你的情況。 – JonahGabriel
感謝它旋轉的意見,但不是你認爲的導航欄...所以這不是一個解決方案的時刻。我的第二個想法是讓prefferredInterface方法工作,而不是這樣,它顯示在正確的界面,並且shouldAutoRotate會讓它再次旋轉......?我將編輯與更新 – StuartM