【问题标题】:iphone sdk transparent subview backgroundiphone sdk 透明子视图背景
【发布时间】:2011-01-26 19:45:43
【问题描述】:

我有一个带有图片的主视图。

我正在尝试使用[self.view addSubview:view2]; 添加一个子视图,但我希望 view2 背景是透明的。已尝试将 opaque=no 和背景颜色设置为 clearcolor,还尝试将 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

但仍然不显示子视图透明的背景......有什么想法吗?

【问题讨论】:

    标签: iphone uiview transparent


    【解决方案1】:

    试试:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        类似这样的:

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

        【讨论】:

          【解决方案4】:

          在函数中

          - (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

          【讨论】:

            【解决方案5】:

            我遇到过一些情况,... addSubview:clearView] 似乎将clearView (WTF!) 的背景颜色重置为不清楚的内容。我添加了一个

            [clearView setBackgroundColor:nil];
            

            在那之后的某个地方,它似乎有所帮助。

            【讨论】:

              猜你喜欢
              • 2010-11-27
              • 2011-02-24
              • 2015-05-24
              • 2023-03-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多