iphone sdk透明子视图背景

时间:2011-01-26 19:45:43

标签: iphone uiview transparent

我有一张主视图,上面有一张图片。

我正在尝试使用[self.view addSubview:view2];添加子视图,但我希望view2背景透明。尝试了 opaque = no 和背景颜色以清除颜色,并尝试将uiview子类化并使用以下方法重写drawrect:

#import "TransparentView.h"


@implementation TransparentView

- (id)initWithFrame:(CGRect)frame 
{
    if (self = [super initWithFrame:frame]) {
        [self setBackgroundColor:[UIColor clearColor]];
        self.opaque=NO;
        self.clearsContextBeforeDrawing=YES;
    }
    return self;
}

- (void)drawRect:(CGRect)rect 
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, rect);

    CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
    CGContextFillRect(context, rect);
}


@end

但是仍然没有显示子视图的背景透明......任何想法?

5 个答案:

答案 0 :(得分:11)

尝试:

view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
view.opaque = NO;

答案 1 :(得分:4)

视图是从nib文件加载的吗?如果是,则不会调用-initWithFrame:;将调用-initWithCoder:。进行此初始化的更好位置可能是-viewDidLoad。但是将背景颜色设置为[UIColor clearColor]绝对可以解决问题。

答案 2 :(得分:2)

尝试使用0.0 for Alpha为子视图的背景着色。这应该使它完全透明。

这样的事情:

UIColor *myUIColor = [UIColor colorWithRed: 1.0 green: 1.0 blue: 1.0 alpha:0.0];

答案 3 :(得分:1)

在功能

- (void)drawRect:(CGRect)rect 

尝试更新

    CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);

  const CGFloat BACKGROUND_OPACITY = 0.85; //Note: update this value to what you need 
  CGContextSetRGBFillColor(context, 1, 1, 1, BACKGROUND_OPACITY); // You can change 1,1,1 to the needed values

此链接可能对您有所帮助 http://www.cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html

答案 4 :(得分:0)

我遇到过... addSubview:clearView]似乎将clearView WTF!)的背景颜色重置为不明确的情况。我添加了一个

[clearView setBackgroundColor:nil];
在那之后的某个地方似乎有所帮助。