为什么我的视图是黑色的?

时间:2013-07-01 04:00:03

标签: iphone ios objective-c core-graphics cgrect

我的视图是黑色矩形......但它不应该...... 这是我绘制视图的方法,它作为子视图添加到我的表视图中:

- (void)drawRect:(CGRect)rect
{
    //// General Declarations
    CGContextRef context = UIGraphicsGetCurrentContext();

    //// Color Declarations
    UIColor* color3 = [UIColor colorWithRed: 0.102 green: 0.737 blue: 0.612 alpha: 1];
    UIColor* buttonStrokeColor = [UIColor colorWithRed: 0.925 green: 0.941 blue: 0.945 alpha: 0.004];

    //// Image Declarations
    UIImage* image = [UIImage imageNamed: @"image"];
    UIColor* imagePattern = [UIColor colorWithPatternImage: image];

    //// Group 2
    {
        //// AddButton Drawing
        UIBezierPath* addButtonPath = [UIBezierPath bezierPathWithRect: CGRectMake(280.0, 3.0, 30, 30)];
        [color3 setFill];
        [addButtonPath fill];
        [buttonStrokeColor setStroke];
        addButtonPath.lineWidth = 1;
        [addButtonPath stroke];

        //// Group
        {
            //// Rectangle Drawing
            UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(280.0, 3.0, 30.0, 30.0)];
            CGContextSaveGState(context);
            CGContextSetPatternPhase(context, CGSizeMake(86, 33));
            [imagePattern setFill];
            [rectanglePath fill];
            CGContextRestoreGState(context);
            [buttonStrokeColor setStroke];
            rectanglePath.lineWidth = 1;
            [rectanglePath stroke];
        }
    }

代码中是否存在使矩形变黑的内容? (它是一个完整的黑匣子)

1 个答案:

答案 0 :(得分:0)

很可能你是在视图自己的范围之外绘制的。所有绘图必须根据视图的边界而不是其框架完成。

这意味着原点始终为0,0。根据视图的原点0,0更新贝塞尔曲线路径。

您还应该根据运行时视图的大小设置绘图代码。无论外部代码创建视图的大小,都要使代码正常工作。