当前位置:  开发笔记 > IOS > 正文

难道UIToolBar不透明吗?

如何解决《难道UIToolBar不透明吗?》经验,为你挑选了6个好方法。

我尝试以下代码,但它不起作用.

[helloToolbar setBackgroundColor:[UIColor clearColor]];

morais.. 57

要制作完全透明的工具栏,请使用此处描述的方法.简而言之,创建一个TransparentToolbar继承自UIToolbar 的新类,并使用它来代替UIToolbar.

TransarentToolbar.h

@interface TransparentToolbar : UIToolbar
@end

TransarentToolbar.m

@implementation TransparentToolbar

// Override draw rect to avoid
// background coloring
- (void)drawRect:(CGRect)rect {
    // do nothing in here
}

// Set properties to make background
// translucent.
- (void) applyTranslucentBackground
{
    self.backgroundColor = [UIColor clearColor];
    self.opaque = NO;
    self.translucent = YES;
}

// Override init.
- (id) init
{
    self = [super init];
    [self applyTranslucentBackground];
    return self;
}

// Override initWithFrame.
- (id) initWithFrame:(CGRect) frame
{
    self = [super initWithFrame:frame];
    [self applyTranslucentBackground];
    return self;
}

@end

(上面链接的博客文章中的代码)



1> morais..:

要制作完全透明的工具栏,请使用此处描述的方法.简而言之,创建一个TransparentToolbar继承自UIToolbar 的新类,并使用它来代替UIToolbar.

TransarentToolbar.h

@interface TransparentToolbar : UIToolbar
@end

TransarentToolbar.m

@implementation TransparentToolbar

// Override draw rect to avoid
// background coloring
- (void)drawRect:(CGRect)rect {
    // do nothing in here
}

// Set properties to make background
// translucent.
- (void) applyTranslucentBackground
{
    self.backgroundColor = [UIColor clearColor];
    self.opaque = NO;
    self.translucent = YES;
}

// Override init.
- (id) init
{
    self = [super init];
    [self applyTranslucentBackground];
    return self;
}

// Override initWithFrame.
- (id) initWithFrame:(CGRect) frame
{
    self = [super initWithFrame:frame];
    [self applyTranslucentBackground];
    return self;
}

@end

(上面链接的博客文章中的代码)



2> Nikolozi..:

在iOS 5中,只需调用setBackgroundImage并传递透明图像.

这是我的方式(我动态生成透明图像):

CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
CGContextFillRect(context, rect);
UIImage *transparentImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[toolbar setBackgroundImage:transparentImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];


你可以传递一个新分配的UIImage:`[toolbar setBackgroundImage:[UIImage alloc] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];`

3> Brandon Bodn..:

你能做的最好就是使用

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

这将为您提供一个黑色但半透明的工具栏.


请查看下面的解决方案,了解完全透明(非半透明)工具栏.

4> 3lvis..:

透明(iOS 5.0):

[toolbar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

半透明:

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



5> Cœur..:

所有设备的累积解决方案,从最古老的iOS 3.0(iPhone 1)到最新的iOS 6.1(iPad mini).

@implementation UIToolbar (Extension)

- (void)drawRect:(CGRect)rect
{
    if (CGColorGetAlpha(self.backgroundColor.CGColor) > 0.f)
    {
        [super drawRect:rect];
    }
}

- (void)setTransparent
{
    //iOS3+
    self.backgroundColor = [UIColor clearColor];

    //iOS5+
    if ([self respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)])
    {
        [self setBackgroundImage:[[UIImage new] autorelease] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
    }
    //iOS6+
    if ([self respondsToSelector:@selector(setShadowImage:forToolbarPosition:)])
    {
        [self setShadowImage:[[UIImage new] autorelease] forToolbarPosition:UIToolbarPositionAny];
    }
}

@end

如果需要透明工具栏,请调用setTransparent它.如果需要非透明工具栏,请设置您选择的backgroundColor或自行添加imageView.



6> 小智..:

另一种解决方案是为UIToolbar定义一个类别:

@implementation UIToolbar(Transparent) 
-(void)drawRect:(CGRect)rect {
    // do nothing in here
}
@end

在IB中,将工具栏设置为黑色半透明且不透明.


请注意,这会使您应用中的_all_工具栏变得透明.
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有