2011-04-03 49 views
3

我無法設置大小爲(650,400)的內容。但是,即使我創建了popoverController,其寬度與創建的寬度相同&。設置PopoverContentSize時出現問題

不知道什麼是擔心? 在點擊輸入它會顯示如下

enter image description here

- (IBAction)setButtonTapped:(id)sender 
{ 
    popover *mpopover  = [[popover alloc] init]; 

    UINavigationController *NavController  = [[UINavigationController alloc] initWithRootViewController:mpopover]; 

    //NavController.navigationBar.backgroundColor = [UIColor darkGrayColor]; 
    mPickerPopover = [[[UIPopoverController alloc] initWithContentViewController:NavController] retain]; 

    CGSize popoversize  = CGSizeMake(400, 90); 

    [mpopover setparent:mPickerPopover]; 

    [mpopover setToolBarFrame:popoversize]; 

    mPickerPopover.popoverContentSize = popoversize; 

    [mPickerPopover presentPopoverFromRect:CGRectMake([sender frame].origin.x, [sender frame].origin.y, 20, 20) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

    [mpopover release]; 
} 

輕敲顯示按鈕看起來像這樣 enter image description here

-(void)buttonView:(id)sender 
{ 

    CGSize popoversize  = CGSizeMake(650, 320); 

    [parent setPopoverContentSize:popoversize animated:YES]; 


    [toolbar setFrame:CGRectMake(0, popoversize.height- 90, popoversize.width, 60)]; 

    CATransition *transition = [CATransition animation]; 
    transition.type = kCATransitionPush; 
    transition.duration = 1.0f; 
    transition.timingFunction = UIViewAnimationCurveEaseInOut; 
    [self.view.layer addAnimation:transition forKey:@"transitionViewAnimation"]; 
    } 
+0

我想發佈您的代碼,它可能會幫助你得到答案 – lxt 2011-04-03 16:44:46

回答

2

你問這是不是很清楚,但與popovers你需要確保在顯示彈出窗口之前在內容視圖控制器上設置popoverContentSize。通常我會在viewDidLoad方法中使用我的視圖控制器,它將用於彈出。

+0

不要緊,是我們初始化酥料餅它的工作原理罰款。問題是設置contentsi彈出窗口後顯示大小(650,400)。 – Anand 2011-04-15 02:20:30

+0

我注意到一旦popover的內容大小顯示出來之前就會發生問題,你應該能夠設置大小並且它會更新,但並不總是如此。我解決這個問題的方法是再次在popover上調用presentPopoverFromRect,然後更新爲新的大小。 – 2011-04-15 18:10:18

1

從蘋果公司的文檔:

「您指定必須至少320點的寬度值和不超過600點。」

也許試圖將寬度設置爲650是問題所在。

1

我有一個類似的問題,我無法在設備旋轉期間更改彈出控制器的大小。我在answer to a similar question中找到了導致我的解決方案的信息。

因爲我是通過一個Bar按鈕來呈現彈出窗口,所以UIKit通過在旋轉過程中調整彈出窗口的大小來「試圖」提供幫助(因爲在改變到不同的設備方向後按鈕的位置可能不同) 。即使我確切知道每種情況下我想要的彈出窗口的大小,但並不會考慮我對setPopoverContentSize的調用。我的解決方案是關閉willAnimateRotationToInterfaceOrientation中的彈出窗口,然後在爲contentSizeForViewInPopover和popoverContentSize設置適當的值後,在didRotateFromInterfaceOrientation中重新呈現相同的彈出窗口。 IHTH

+0

你是對的,我也是這麼做的。感謝您的回答。 – Anand 2011-09-20 07:54:29

1

考慮使用:

-(BOOL)splitViewController:(UISplitViewController *)svcontroller shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{ 
    return NO; 
} 

這將顯示在酥料餅的縱向和橫向。

0

我注意到你有一個UIViewController稱爲酥料餅應該是你引用的popoever 內顯示爲mpopover 導航到類,並在視圖控制器週期的viewDidLoad方法 確保添加以下代碼

self.contentSizeForViewInPopover = CGSizeMake(400, 90); // or Any size you like 

... & ......

相關問題