2011-10-11 104 views
1

我有一個iPad應用程序,通過UIPopoverController顯示UIImagePicker。 我想使popovercontroller全屏(或至少儘可能大)。全屏iPad UIPopoverController

我正在使用presentPopoverFromRect方法與新的CGRect,我已設置爲各種寬度和高度,沒有結果。 imagepicker的來源是UIImagePickerControllerSourceTypePhotoLibrary

UIPopoverController* popoverController = [[UIPopoverController alloc] initWithContentViewController:photoPicker]; 
popoverController.delegate = self; 
popoverController presentPopoverFromRect:CGRectMake(0, 0, 2500, 2500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

我甚至可以製作這個全屏嗎?那麼sourcetype UIImagePickerControllerSourceTypeCamera呢?

回答

1

要設置彈出窗口大小,您可以覆蓋放置在popovercontroller中的視圖控制器中的-contentSizeForViewInPopover,即 。

presentPopoverFromRect用於定義彈出窗口將被打開的框架,而不是用於設置其大小。

+0

然後我需要擴展UIImagePickerController並在那裏添加-contentSizeForViewInPopover方法?這是設置它的大小的唯一方法嗎? – Jovan

+0

'UIImagePickerController'繼承自'UIViewController',所以它已經實現了'-contentSizeForViewInPopover'。只需使用'popoverController.contentSizeForViewInPopover = CGSizeMake(w,h);'在加載到popover控制器之前 – Bartek

0

您可能也想要一個ModalViewController?這其中有4個不同的presentationstyles(其中一個全屏)

一個很好的例子是寫在這個問題上的原型:presentModalViewController fullscreenmode issue (它在// --- 編輯 --- //)

看看它是否適合你。

+0

這不起作用。這就是我一開始就試過的,直到我得到一個異常說: '在iPad上,UIImagePickerController必須通過UIPopoverController' – Jovan

1

我只是驗證了這個代碼工作在iPad 1和iPad 4(這意味着它在IOS 5.1.1支持 - 6.1.2)

popover = [[UIPopoverController alloc] initWithContentViewController:yourVC]; 
    [popover setPopoverContentSize:CGSizeMake(1024, 1024)]; 

    [popover presentPopoverFromRect:CGRectZero 
             inView:appDelegate.splitViewController.view 
        permittedArrowDirections:UIPopoverArrowDirectionAny 
            animated:YES]; 

你應該注意到,這是很難駁回酥料餅因爲它會以縱向或橫向「填滿屏幕」。我有我的appDelegate.splitViewController這些方法:

- (BOOL)shouldAutomaticallyForwardRotationMethods { 

    NSLog(@"MG - shouldAutomaticallyForwardRotationMethods"); 
    return YES; 
} 

- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers { 

    NSLog(@"MG - automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers"); 
    return YES; 
} 

只是取消隱藏/隱藏yourVC的一個角落裏一個按鈕,這個辭退:

[popover dismissPopoverAnimated:YES]; 

還應當指出的是,「酥料餅」是一個強大的屬性,否則當它試圖呈現時你會得到一個釋放的消息。