iPadでUISplitViewControllerを使用する場合、ルートビューと詳細ビューの間に黒い垂直の仕切り線があります。この行を削除する方法はありますか?
ありがとう
iPadでUISplitViewControllerを使用する場合、ルートビューと詳細ビューの間に黒い垂直の仕切り線があります。この行を削除する方法はありますか?
ありがとう
実際、私は(ディラン)の答えの答えにいくつかの変更があります
appDelegateで、ウィンドウではなくspliteviewコントローラーに画像を追加する必要があります
self.splitViewController.view.opaque = NO;
imgView = [[UIImageView alloc] initWithImage:
[UIImage imageNamed:@"FullNavBar.png"]];
[imgView setFrame:CGRectMake(0, 0, 1024, 44)];
[[self.splitViewController view] insertSubview:imgView atIndex:0];
[[self.splitViewController view] setBackgroundColor:[UIColor clearColor]];
ここで、selfはAppDelegateのオブジェクトです。
今このスレッドの答えを適用します:iPhoneOS SDK-ビューからコーナーの丸めを削除します(iPadの問題)(abs)による答え
上記の投稿の答えを編集してください
-(void) fixRoundedSplitViewCorner {
[self explode:[[UIApplication sharedApplication] keyWindow] level:0];
}
-(void) explode:(id)aView level:(int)level
{
if ([aView isKindOfClass:[UIImageView class]]) {
UIImageView* roundedCornerImage = (UIImageView*)aView;
roundedCornerImage.hidden = YES;
}
if (level < 2) {
for (UIView *subview in [aView subviews]) {
[self explode:subview level:(level + 1)];
}
}
imgView.hidden = FALSE;
}
**imgView.hiddenをFALSEに設定してimgViewをAppDelegate.hファイルに宣言します**
そしてこれを呼び出すことを忘れないでください
-(void)didRotateFromInterfaceOrientation:
UIInterfaceOrientation)fromInterfaceOrientation
{
[yourAppDelegate performSelector:@selector(fixRoundedSplitViewCorner)
withObject:NULL afterDelay:0];
}
chintan adatiyaの回答は、コーナーとナビゲーションバーのみをカバーしていますが、マスタービューと詳細ビューの間の線をカバーする方法を見つけました。
それはいいことではありませんが、それは魅力のように機能します。
まず、幅1ピクセル、高さ704ピクセルの画像を作成します。
didFinishLaunchingWithOptionsに次のコードを追加します。
UIView *coverView = [[UIView alloc] initWithFrame:CGRectMake(320, 44, 1, 704)];
[coverView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"divider_cover.png"]]];
[splitViewController.view addSubview:coverView];
そして完了。
継続する背景画像が必要な場合は、次の3つの画像を作成します。
ここに最初の投稿、みなさん、こんにちは。
偶然にそれを行う方法を発見しました...なぜ私が仕切り線を失ったのかを見つけようとしたとき。まだ興味がある場合は、非表示にする方法は次のとおりです。
1)詳細(右側)ビューで、ビュー全体にまたがるサブビューがあることを確認します。
2)このサブビュービューを(-1、0)にオフセットします。
3)詳細ビューの[サブビューのクリップ]オプションがオフになっていることを確認します。
Voilà、お楽しみください。
ほとんどの場合、メインウィンドウのビューでその背後に別の画像を設定することでそれを取り除くことができます。これはアプリデリゲートからですdidFinishLaunchingWithOptions
// Add the split view controller's view to the window and display.
splitViewController.view.opaque = NO;
splitViewController.view.backgroundColor = [UIColor clearColor];
[window addSubview:splitViewController.view];
[window insertSubview:bgImageView belowSubview:splitViewController.view];
[window makeKeyAndVisible];
ただし、splitviewcontrollerによってカスタム描画されたように見える2つの視覚的なアーティファクトが上部と下部に残ります。
興味深いことに、私が取り組んでいるアプリでは、UISplitViewControllerの両方のビューに黒の背景色が必要です。仕切り線の色を白に変えたいのですが(見えるように)。両方の背景色を黒にすることは、境界線を取り除く(見えなくする)ための1つの方法ですが、それはおそらくほとんどの人にとって解決策ではありません。
iOS10でテスト済み(おそらくiOS9でも動作します)。
splitviewController.view.backgroundColor = UIColor.white
仕切りを取り除きます。どうやらディバイダーはマスターコンテナとディテールコンテナの間のギャップにすぎません。
しばらく見て回ったところ、独自のカスタム分割ビューを作成する以外に、これを行う方法はないという結論に達しました。
MattGammellによるMGSplitViewControllerをお試しください
http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad
私はここで遅れるかもしれませんが、私はうまくいく解決策を持っています。iOS8以降でも機能しますsplitViewController.preferredDisplayMode=UISplitViewControllerDisplayModeAllVisible ; フルスクリーントグルボタンを押すと、シームレスにスライドインおよびスライドアウトします。
ここにトリックがあります:
最初のサブクラスUISplitViewController.m
ヘッダーに次を追加します:
@property (strong, nonatomic) UIView *fakeNavBarBGView;
viewDidLoadメソッドに次のコードを追加します。
CGFloat fakeNavBarWidth = 321; // It is important to have it span the width of the master view + 1 because it will not move when the split view slides it's subviews (master and detail)
CGFloat navbarHeight = self.navigationController.navigationBar.frame.size.height + 20;
self.fakeNavBarBGView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, fakeNavBarWidth, navbarHeight)];
self.fakeNavBarBGView.backgroundColor = [UIColor redColor];
// Add Fake navbar to back of view
[self.view insertSubview:self.fakeNavBarBGView atIndex:0];
// SplitView Controller
UISplitViewController *splitViewController = self;
DetailViewController *detailVC = [navigationController.viewControllers lastObject];
detailVC.fakeNavBarSubView = self.fakeNavBarBGView;
detailVC.SVView = self.view;
DetailViewController.hに、次を追加します。
@property (strong, nonatomic) UIView *SVView;
@property (strong, nonatomic) UIView *fakeNavBarSubView;
これが最後のトリックです:DetailViewController.mで、viewDidLoadメソッドに以下を追加します(マスターテーブルをクリックするたびに呼び出されます):
[self.SVView sendSubviewToBack:self.fakeNavBarSubView];
[self.SVView bringSubviewToFront:self.view];
それを実行し、魔法を見てください;-)
プライベートAPI(App Storeの拒否を引き起こす可能性があります):
[splitViewController setValue:@0.0 forKey:@"gutterWidth"];
これは、最初のviewControllerのビューのbackgroundColorプロパティを誤って設定したためです。おそらくclearColorに設定されていますが、今は覚えていません。
UIManager.put( "SplitPaneDivider.draggingColor"、new Color(255、255、255、0));