2010-11-19 36 views
13

我想爲iPad創建一個新的鍵盤。在iPad中居中一個uipopover

我設計了一個視圖,當用戶按下按鍵時,它具有按鍵和所有基礎工作來填充文本框,並在用戶按下返回按鈕時將值傳遞迴調用例程。

這一切都很好。

現在 - 我想創建這個視圖作爲popover。

我有基本的操作完成(彈出,被罰下場)

但現在我需要一些微調的幫助。

這裏是我的問題...

1)如何創建屏幕上居中沒有UIPopoverArrowDirectionAny選擇一個酥料餅窗口?

2)確保酥料餅的窗口是我與在XIB文件(目前,其調整大小,並去除了一些窗口的最右邊的大小)的

由於
託尼

回答

57

要沒有箭頭僅僅是作爲「permittedArrowDirections」傳遞0:

[popOverController presentPopoverFromRect:rect inView:view permittedArrowDirections:0 animated:YES]; 

要居中,通過位於視圖的中央1x1的矩形:

CGRect rect = CGRectMake(viewWidth/2, viewHeight/2, 1, 1); 
[popOverController presentPopoverFromRect:rect inView:view permittedArrowDirections:0 animated:YES]; 

然後,你必須一個居中且無箭頭的popover。

關於移除箭頭的位可隨時中斷。由於某種原因,他們沒有提供UIPopoverArrowDirectionNone選項,他們可能會選擇在將來傳遞0時拋出異常,或者默認爲某種情況。需要您自擔風險使用它。

+0

適用於iOS 5.x – 2012-03-22 10:29:54

+2

對於橫向模式下的iPad,我必須切換CGRectMake寬度和高度才能正確地居中對齊。 – Alan 2012-04-03 18:20:37

+1

也適用於iOS 7.0.x。 – 2014-02-03 14:47:26

0

創建它的大小如果你使用的是UIPopoverController,它將會有一個箭頭。這是你的選擇。

UIPopoverArrowDirectionAny 
UIPopoverArrowDirectionUp 
UIPopoverArrowDirectionDown 
UIPopoverArrowDirectionLeft 
UIPopoverArrowDirectionRight 

正如你可以看到有沒有UIPopoverArrowDirectionNone

對於廈門國際銀行規模,在實現文件的您viewDidLoad方法,您可以設置如下。

self.contentSizeForViewInPopover = CGSizeMake(320.0, 360.0); 

您可以任意設置彈出窗口大小。

+0

是的,但如果你硬編碼0就像UIPopoverArrowDirectionNone – user2387149 2014-03-28 17:48:52

0

我剛剛工作的這一個,但希望做盡可能多的故事板儘可能從而改變了做法有點:

1)選擇在故事板和取消選中路線了酥料餅/向下/向左/向右擺脫箭頭。

爲中心,它在屏幕上覆蓋了賽格瑞準備,做這樣的事情:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    UIStoryboardPopoverSegue* popover = (UIStoryboardPopoverSegue*)segue; 
    CGFloat horizontalInset = (self.view.frame.size.width - popover.popoverController.popoverContentSize.width)/(CGFloat)2.0; 
    CGFloat verticalInset = (self.view.frame.size.height - popover.popoverController.popoverContentSize.height)/(CGFloat)2.0; 
    popover.popoverController.popoverLayoutMargins = 
     UIEdgeInsetsMake(
      verticalInset, 
      horizontalInset, 
      verticalInset, 
      horizontalInset); 
} 

在我來說,我還發現,讓我改變背景顏色的酥料餅SEGUE圓角半徑不符合我的設計清除整理了這一點,即它添加到上面的塊:

popover.popoverController.backgroundColor = [UIColor clearColor]; 

2)在對SEGUE目標控制器查找屬性「酥料餅」,並勾選「使用明確的大小」,並把大小你想它出現在popover模式。