我已经使用了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子类黑色背景颜色如何更改
答案 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的背景颜色,您必须用颜色填充该上下文。 请确保用视图的矩形框替换矩形。它对我来说就像一个魅力。