目标C - 圈子后面的不需要的黑色背景

时间:2015-02-08 16:27:10

标签: objective-c

我正在尝试使用drawRect绘制一个绿色圆圈但是我在绿色圆圈周围的矩形区域中获得了黑色背景。

我需要边界矩形的填充是透明的。

这是我的DrawCircle课程:

 - (void)drawRect:(CGRect)rect {
    UIBezierPath *ballBezierPath = [UIBezierPath rect];
    [[UIColor greenColor] setFill];
    [ballBezierPath stroke];

    self.opaque = NO;
    self.backgroundColor = [UIColor clearColor]; 
}

我的研究表明,添加最后两行来设置opaquebackgroundColor可以解决问题,但它仍然不起作用。

以下是我在ViewController的{​​{1}}方法中添加子视图的位置:

viewDidLoad

我错过了什么或者我采取了不同的方法吗?

1 个答案:

答案 0 :(得分:0)

您当前的方法存在一些问题:

  • 实际绘制后,属性设置得太晚
  • 您现在正在每次抽奖中设置这些属性,它们只需要设置一次
  • 更改属性可能会触发重绘,并且您最终会反复重绘
  • 你在没有超级电话的情况下覆盖drawRect:。要让backgroundColor能够自己用这种颜色填充矩形,或者让超类来完成它。

将您的视图配置移动到初始化程序,drawRect不适合执行任何操作。实施initWithFrameinitWithCoder(以支持Interface Builder。

- (id) initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        [self setupView];
    }
    return self;
}

- (id) initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self setupView];
    }
    return self;
}

- (void) setupView {
    self.opaque = NO;
    self.backgroundColor = [UIColor clearColor];
}