在iPad上使用UISplitViewController时,在根视图和细节视图之间有一条黑色垂直分隔线。有没有办法删除这一行?
由于
答案 0 :(得分:10)
我对(Dylan)的回答有一些修改
在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]];
这里自我是AppDelegate的对象。
现在应用此主题的答案:iPhoneOS SDK - Remove Corner Rounding from views (iPad problem)通过(绝对)回答
编辑上面帖子的答案是
-(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];
}
答案 1 :(得分:9)
@bteapot的优秀答案。我测试了这个并且它可以工作,甚至可以摆脱主/细节导航条之间的界限。
您可以在故事板中添加&#34; gutterWidth&#34;键路径和USplitViewController运行时属性的值0。
答案 2 :(得分:6)
chintan adatiya回答仅涵盖了角落和导航栏,但我发现了如何覆盖Master和Detail视图之间的界限。
这不好看,但它就像一个魅力。
首先创建宽1 px,高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张图片:
答案 3 :(得分:5)
首先发帖,大家好。
我发现了如何意外地做到这一点......当我试图找到为什么我失去了分隔线时。如果您仍然感兴趣,可以使用以下隐藏方法:
1)在您的详细信息(右侧)视图中,确保您有一个跨越整个视图的子视图。
2)将此子视图视图偏移到(-1,0)。
3)确保详细视图未选中“剪辑子视图”选项。
Voilà,享受。
答案 4 :(得分:3)
你可以通过在主窗口的视图中设置其背后的另一个图像来摆脱它。这是来自app delegate 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自定义绘制的。
答案 5 :(得分:2)
有趣的是,在我正在处理的应用程序中,我希望UISplitViewController中的两个视图都有黑色背景颜色。我想将分隔线的颜色更改为白色(这样你就可以看到它)。将两种背景颜色都设置为黑色是摆脱(隐藏)分界线的一种方法,但对于大多数人来说这可能不是解决方案。
答案 6 :(得分:1)
我环顾了一会儿,得出的结论是,除了创建自己的自定义拆分视图外,没有办法做到这一点。
答案 7 :(得分:1)
尝试Matt Gammell的MGSplitViewController
http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad
答案 8 :(得分:1)
我可能会迟到,但我做有一个有效的解决方案。它甚至适用于iOS 8+ 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方法中添加以下内容(每次单击Master表时调用):
[self.SVView sendSubviewToBack:self.fakeNavBarSubView];
[self.SVView bringSubviewToFront:self.view];
运行它并观看魔法; - )
答案 9 :(得分:1)
私有API(可能导致App Store拒绝):
[splitViewController setValue:@0.0 forKey:@"gutterWidth"];
答案 10 :(得分:1)
在iOS10上测试过(可能也适用于iOS9)。
splitviewController.view.backgroundColor = UIColor.white
它删除了分隔符。显然,分隔符只是主容器和细节容器之间的间隙。
答案 11 :(得分:-1)
我通过设置第一个viewController视图的backgroundColor属性意外地做了这个 - 可能是clearColor,我现在不记得了。
答案 12 :(得分:-3)
UIManager.put(“SplitPaneDivider.draggingColor”,新颜色(255,255,255,0));