我有一张主视图,上面有一张图片。
我正在尝试使用[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
但是仍然没有显示子视图的背景透明......任何想法?
答案 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];
在那之后的某个地方似乎有所帮助。