白色透明工具栏,如何使状态栏匹配

时间:2014-10-01 18:15:02

标签: ios statusbar uitoolbar uistatusbar

使用xcode6和故事板

我的工具栏位于我的视图顶部。工具栏下面是mapview。地图视图在状态栏下展开,这就是我想要的。基本上我希望工具栏和状态栏有点透明~20%,这样你就可以看到下面的mapview。

我已将工具栏的背景颜色设置为白色80%不透明。但是我不知道如何让状态栏完全相同。

根据我所知道的,状态栏是100%透明的,这意味着它将显示其下方的任何视图。我试图在我的工具栏上方添加一个20点高的视图,我已将其设置为白色,80%透明。这几乎达到了我想要的效果,但工具栏和状态栏之间有一条黑线,

enter image description here

我是否走在正确的轨道上?如何使工具栏颜色和透明度与状态栏颜色和透明度相匹配,并避免使用该行?

修改

clipsToBounds非常适合删除该行。

enter image description here

我以编程方式添加了一个按钮:

-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)button forPopoverController:(UIPopoverController *) pc {
    button.image = [UIImage imageNamed:@"bars"];

    NSMutableArray *items = [self.toolbar.items mutableCopy];
    if (!items) {
        items = [NSMutableArray arrayWithObject:button];
    } else {
        [items insertObject:button atIndex:0];
    }

    [self.toolbar setItems:items];
}

在我添加该按钮后,我的工具栏背景变回白色:

enter image description here

编辑2 所以我刚刚发现了UIBarPositionTopAttached枚举,我可以将我的视图设置为工具栏委托。我这样做了:

  • (UIBarPosition)positionForBar:(id)bar { return UIBarPositionTopAttached; }

并确认它已被调用。我希望这会告诉iOS我的工具栏已附加到状态栏,我的工具栏颜色和所有工具都将流入状态栏。那不是这样吗?

似乎将工具栏附加到状态栏,以便状态栏采用工具栏的背景不应该这么难,即我是否真的必须创建一个额外的20点高视图来实现这一目标?即使这样看起来我做错也是如此,因为当我添加按钮时,我的工具栏透明度会变回不透明。

2 个答案:

答案 0 :(得分:3)

UIToolbar顶部有一个发际线阴影。如果设置bounds裁剪属性,它将隐藏该行。

toolbar.clipsToBounds = YES;

答案 1 :(得分:0)

虽然剪辑到边界效果很好,但我认为这个问题的正确答案是在工具栏上使用barPosition。

有几种方法可以做到这一点:

将您的视图设置为工具栏的委托并实现此委托方法:

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar {
    return UIBarPositionTopAttached;
}

或者在故事板中在UIToolbar上设置用户定义的运行时属性:

barPosition Number 3

enter image description here