0

我在这里使用教程绘制一个矩形

标志类.m

-(void)drawRect:(CGRect)rect {

        CGContextRef context = UIGraphicsGetCurrentContext();

        CGContextSetLineWidth(context, 2.0);

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

        CGContextMoveToPoint(context, 100, 100);
        CGContextAddLineToPoint(context, 150, 150);
        CGContextAddLineToPoint(context, 100, 200);
        CGContextAddLineToPoint(context, 50, 150);
        CGContextAddLineToPoint(context, 100, 100);

        CGContextStrokePath(context);
}

    @end

然后我将此视图添加到另一个视图,如下所示

-(IBAction)drawRectangle {
    FlagClass     *flag     =   [[FlagClass alloc] initWithFrame:CGRectMake(20.0, 100.0, 80, 40)];

    [self.view addSubview:flag];

}

点击按钮后,我得到的是

在此处输入图像描述

我的问题 :

  1. 我的矩形的这些坐标是(20,100,80,40)。drawRect方法中的数字是什么
  2. 为什么我只得到一个黑色矩形而不是蓝色矩形,其中定义了坐标drawRect

如果您对此有任何想法,请提供帮助。

4

1 回答 1

2

由于您的视图(FlagClass实例)的尺寸,您的所有绘图都在可见边界之外进行(视图正在“剪裁”蓝色矩形)。您看到的黑色矩形是 UIView 的默认背景填充。

要获得您想要的,您可以调整子视图的框架,使其足够大以包含描边路径。或者改变你用来绘制的坐标;这些是对 的调用中的数字CGContextAddLineToPoint。这是至少查看您在做什么的一种方法(同时删除黑色背景):

FlagClass *flag = [[FlagClass alloc] initWithFrame:CGRectMake(20.0, 100.0, 250, 250)];
flag.backgroundColor = [UIColor clearColor];
[self.view addSubview:flag];

通过更改子视图的宽度和高度(第 3 和第 4 个参数为CGRectMake),子视图变得足够大以包含正在绘制的正方形。

于 2012-08-08T21:21:09.183 回答