透明的UIToolbar

时间:2011-06-06 10:04:14

标签: iphone transparent uitoolbar

我编写了以下代码,以使我的工具栏透明。

[mtoolbar setBackgroundColor:[UIColor clearColor]];

如何使UIToolbar透明?

7 个答案:

答案 0 :(得分:11)

您可以将属性translucent设置为YES,看看是否有帮助。

答案 1 :(得分:11)

[self.toolbar setBackgroundImage:[UIImage new]
              forToolbarPosition:UIToolbarPositionAny
                      barMetrics:UIBarMetricsDefault];

[self.toolbar setBackgroundColor:[UIColor clearColor]];

答案 2 :(得分:5)

将属性translucent设置为YES在iOS 5及更低版本中无效。以下是没有子类化工具栏的方法:

const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];

[self.toolbar setBackgroundImage:maskedImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

答案 3 :(得分:4)

检查以下代码

[myToolbar setBarStyle:UIBarStyleBlack];
[myToolbar setTranslucent:YES];

取自

@BrandonBodnár已在以下SO帖子中回答。

Couldn't UIToolBar be transparent?

你也可以使用不同的方法

Transparent UIToolBar

答案 4 :(得分:2)

for (UIView * sv in [toolBar subviews])
{
     [sv removeFromSuperview];
}

;)任何iOs

答案 5 :(得分:1)

以下适用于iOS 5(和iOS 6 beta 4,虽然在那里仍然可以看到轻微的顶部阴影)。

请注意: 使UIToolbar或UINavigationBar透明化很少是个好主意,以这种方式修改Apple的UIKit元素肯定会迟早破解。

<强> TransparentToolbar.h

#import <UIKit/UIKit.h>

@interface TransparentToolbar : UIToolbar

@end

<强> TransparentToolbar.m

#import "TransparentToolbar.h"

@implementation TransparentToolbar

-(void)insertSubview:(UIView *)view atIndex:(NSInteger)index
{
    //  This method is called with a view of class "UINavigationBarBackground" or "_UIToolbarBackground", respectively. It would be possible to check for this with NSStringFromClass([view class]) to be completely sure that we're skipping the right view.

    if (index != 0)
    {
        [super insertSubview:view atIndex:index];
    }
    else
    {
        // insert your custom background view, if you want to
    }
}


@end

编辑:在iOS 5+中,也可以简单地设置backgroundImage(可以是透明的)。这当然是“更清洁”的解决方案,但不如自定义UIView灵活。

[someToolbar setBackgroundImage:[UIImage imageNamed:@"clear"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

答案 6 :(得分:1)

这适用于iOS 6和7:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), NO, 0.0);
UIImage *blank = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[self.toolBar setBackgroundImage:blank forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];