5

私はnavigationControllerとたくさんのサブビューを備えたUIPopoverControllerを持っています。ポップオーバーのサイズは、次のように表示される直前に設定されます。

[self.myPopover setPopoverContentSize:CGSizeMake(320, 500)];

それはうまくいきます。ポップオーバーは調整されたサイズで表示されます。別のビューがナビゲーションスタックにプッシュされると、ポップオーバーのサイズが再度設定されます-別の高さが必要です-viewWillAppearメソッドで:

self.contentSizeForViewInPopover = CGSizeMake(320, 700);

これも問題なく動作します。前のビューに戻っても、サイズは変わりません。

最初のビューのviewWillAppearに同じ呼び出しを追加しましたが、ビューのサイズが変更されません。

ビュー間を移動するときにポップオーバーのサイズ変更を管理するにはどうすればよいですか?

4

2 に答える 2

3

私はこのハックを使用します:

- (CGSize)contentSizeForViewInPopover
{
    return CGSizeMake(320, 200);
}

- (void) forcePopoverSize 
{
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, 
                                          currentSetSizeForPopover.height - 1.0f);
    self.contentSizeForViewInPopover = fakeMomentarySize;
}


- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self forcePopoverSize];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}
于 2012-03-15T10:34:16.160 に答える
3

これはトリッキーなものです。私は多くのことを試み、ついにこれを機能させました。それはあなたにも役立つかもしれません。

私の中で私は*親contentViewControllerへの参照を保持します。UIPopoverController

この参照は、UIPopoverControllerの初期化中に設定され、その内容です。もちろん、これはビュー階層に直接適合しない場合があります。UIViewController そのショーのコードUIPopowerControllerは次のようなものです。

if (self.popoverController == nil) {
    _contentController = [[ContentViewController alloc] initWithNibName:@"ContentViewController"
                                                                 bundle:[NSBundle mainBundle]]; 

    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:_contentController]; 
    _contentController.parent = popover;
    [popover setPopoverContentSize: CGSizeMake(520.0,580.0)];

    popover.delegate = self;

    self.popoverController = popover;
}

そして、私が使用する内からコンテンツサイズを動的に変更したいcontentViewController場合:

-(void)setNewSize:(CGSize) newSize {

    [_parent setPopoverContentSize:newSize animated:YES];
}
于 2012-03-15T11:29:43.160 に答える