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];
しかし、それは少ししか機能しませんでした:
ポップオーバーの左と下に削除できないスペックがあります(特大のポップオーバーを試しましたが、下のスペースは消えませんでした。さらに左に移動しようとしましたが、まだ左のスペースは消えませんでした)。さらに、ナビゲーション バーが細すぎて (約 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