亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

UIImagePickerController相機預覽在風景應用中為人像

UIImagePickerController相機預覽在風景應用中為人像

縹緲止盈 2019-11-23 13:26:57
在僅橫向應用程序的iPhone應用程序中,我啟動了UIImagePickerController來拍照,但是從相機顯示的實時圖像是縱向的,周圍有空白。圖像旋轉。按下相機按鈕后,預覽非?;靵y,大部分預覽不在屏幕上,并且視圖未正確對齊。蘋果已經承認這是缺陷,并且正在對此進行研究。我的問題是,任何人都可以通過變通辦法(合法或非法)讓我現在開始工作。我不會通過非法修復發布到App Store,但我會擁有一個更好的應用程序來進行用戶測試-當前,相機在橫向環境中幾乎無法使用。如果可以,我將附加一個簡單的測試項目和圖像。編輯-只是為了澄清,我得到的圖像是正確的風景。我希望相機和預覽用戶界面看起來正確!
查看完整描述

3 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

拍攝后我不想旋轉圖像;我想讓預覽在橫向模式下正確顯示。因此,在iOS 6中,我允許在應用程序級別使用縱向模式,但是將應用程序的根視圖控制器設置為class MyNonrotatingNavigationController,其定義如下:


@implementation MyNonrotatingNavigationController


-(NSUInteger) supportedInterfaceOrientations

{

    return UIInterfaceOrientationMaskLandscape;

}


@end

因此,此導航控制器內顯示的所有內容都將沿橫向顯示(您可以使用任何視圖控制器來執行此操作)。現在,當我需要顯示圖像選擇器時,我用支持縱向模式的通用控制器替換了應用程序窗口的根視圖控制器。為了防止老根視圖控制器,并從取消分配自己的觀點,我保持指向他們,直到我準備把它們放回應用程序窗口。


#define APP_DELEGATE ((MyAppDelegate*)[[UIApplication sharedApplication] delegate])

static UIViewController *pickerContainer = nil;

static UIViewController *oldRoot = nil;

static UIView *holdView = nil;


-(void) showPicker

{

    ...create UIImagePickerController...


    oldRoot = APP_DELEGATE.window.rootViewController;

    holdView = [[UIView alloc] initWithFrame:APP_DELEGATE.window.bounds];

    [holdView addSubview:oldRoot.view];


    pickerContainer = [UIViewController new];

    pickerContainer.view = [[UIView alloc] initWithFrame:APP_DELEGATE.window.bounds];

    APP_DELEGATE.window.rootViewController = pickerContainer;

    [pickerContainer presentViewController:picker animated:YES completion:NULL];

}


-(void) imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info

{

    [pickerContainer dismissViewControllerAnimated:YES completion:^{

        dispatch_async( dispatch_get_main_queue(), ^{

            APP_DELEGATE.window.rootViewController = oldRoot;

            [APP_DELEGATE.window addSubview:oldRoot.view];

            pickerContainer = nil;

            oldRoot = nil;

            holdView = nil;

        });

    }];

}

有點痛苦,但它確實適用于照片和視頻。圖像選擇器的控件以縱向模式顯示,但應用程序的其余部分僅橫向顯示。


查看完整回答
反對 回復 2019-11-23
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

我通過使UIImagePickerController屏幕以全屏模式顯示來解決了此問題,這也是Apple建議在iPad上使用的模式。

UIImagePickerController文檔:

在iPad上,如果您指定UIImagePickerControllerSourceTypeCamera的源類型,則可以模式(全屏)或使用彈出窗口來呈現圖像選擇器。但是,Apple建議您僅全屏顯示相機界面。


查看完整回答
反對 回復 2019-11-23
  • 3 回答
  • 0 關注
  • 696 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號