制作UiView子类但背景颜色显示黑色

时间:2013-11-27 09:28:14

标签: iphone

我已经使用了UiView子类,但它的背景颜色没有改变

本课程我正在使用这些方法

- (id)initWithFrame:(CGRect)frame
{
   self = [super initWithFrame:CGRectMake(50, 80, 200, 200)];
   if (self)
       {
       // Initialization code
       }
   return self;
}

- (void)drawRect:(CGRect)rect{

   CGContextRef context = UIGraphicsGetCurrentContext();
   [[UIColor darkGrayColor]setFill];     
   CGContextClearRect(context, rect);
   CGContextSetLineWidth(context, 2.0);

   CGContextBeginPath(context);
   CGContextSetStrokeColorWithColor(context, [UIColor orangeColor].CGColor);
   CGContextMoveToPoint(context, 1, 1);
   CGContextAddLineToPoint(context, 100, 100);
   CGContextStrokePath(context); // and draw 
}

我将此类称为主视图控制器

Newclass *obj =[[Newsclass alloc]init]; 
obj.backgroundColor =[UIColor redColor];
[self.view addsubview :obj];

但默认情况下背景颜色显示黑色。它没有改变

如果我用frame方法或

实现背景色代码init

绘制rect方法而不是改变。

如果我编码

- (id)initWithCoder:(NSCoder*)aDecoder 

比没有调用的方法 请建议我UIview子类黑色背景颜色如何更改

1 个答案:

答案 0 :(得分:0)

首先,您应该在UIView文件中执行颜色部分。

if (self = [super initWithFrame:CGRectMake(220,60, 100, 300)])
{
    self.backgroundColor =[UIColor greenColor];
}

在这种情况下你不需要做什么......;)

肯定会改变你的背景颜色。但接下来发生的事情就是调用Draw rect方法,当draw rect方法在其上方绘制视图时(无论你在该方法中绘制什么),你的颜色都不再可见。

- (void)drawRect:(CGRect)rect
{

   CGContextRef context = UIGraphicsGetCurrentContext();
   CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);

   CGRect rectangle = CGRectMake(0,0,200,300);

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

   CGContextFillRect(context, rectangle);
}

您无法直接设置cgcontext的背景颜色,您必须用颜色填充该上下文。 请确保用视图的矩形框替换矩形。它对我来说就像一个魅力。