3

xcode 4.6 で iPad マスター/ディテール アプリケーションを縦向きで起動すると、却下可能なメニューが表示されます (横向きでは常にオンになります)。このメニュー (ポップオーバーの正しい名前ですか?) は、iOS 5.0 と iOS 5.1 でかなり異なって見えます。以下を参照してください。

ここに画像の説明を入力

5.0 でポップオーバーを 5.1 (およびそれ以降) と同じように見せる方法はありますか? 例えば。画面の高さ全体を取り、余分な境界線/矢印などはありません。望ましい動作は緑で強調表示され、iOS5.0 は赤で強調表示されます。

編集: カスタム popoverBackgroundViewClass を使用して、(配置のために) ポップオーバーを手動で表示しようとしました:

self.masterPopoverController.popoverBackgroundViewClass = [EBPopoverBackgroundView class];
[self.masterPopoverController setPopoverContentSize:CGSizeMake(320, 1004)];
[self.masterPopoverController presentPopoverFromRect:CGRectMake(-20, -40, 1, 1) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];

しかし、それは少ししか機能しませんでした:

popoverBackgroundViewClass ソリューション

ポップオーバーの左と下に削除できないスペックがあります(特大のポップオーバーを試しましたが、下のスペースは消えませんでした。さらに左に移動しようとしましたが、まだ左のスペースは消えませんでした)。さらに、ナビゲーション バーが細すぎて (約 10 ピクセル細くなっています)、それを変更することもできませんでした (ただし、この最後の部分はそれほど努力していませんでしたが)。最後になりましたが、ポップオーバーの右側に 1 ピクセルの黒い線があります (インセットを 0 に設定しても)。

次のようなバックグラウンド クラスを実装しました。

@interface EBPopoverBackgroundView : UIPopoverBackgroundView
@end

そしてM

@implementation EBPopoverBackgroundView {

}

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        NSLog(@"Init with frame %@", NSStringFromCGRect(frame));
    }

    return self;
}

- (CGFloat)arrowOffset {
    return 0.0;
}

- (void)setArrowOffset:(CGFloat)arrowOffset {
    // pass
}

- (UIPopoverArrowDirection)arrowDirection {
    return UIPopoverArrowDirectionRight;
}

- (void)setArrowDirection:(UIPopoverArrowDirection)arrowDirection {
    // pass
}

+ (CGFloat)arrowHeight {
    return 1.0;
}

+ (CGFloat)arrowBase {
    return 1.0;
}

+ (UIEdgeInsets)contentViewInsets {
    return UIEdgeInsetsMake(0, 0, 0, 0);
}

- (void)drawRect:(CGRect)rect {
    NSLog(@"DrawRect %@", NSStringFromCGRect(rect));
    [super drawRect:rect];
}


+ (BOOL)wantsDefaultContentAppearance {
    return YES;
}


@end
4

1 に答える 1

0

私の調査によると、ポップオーバーをまったく新しいコンポーネントとして最初から実装する以外に、これを行う方法はありません。

于 2013-03-29T06:48:14.400 に答える