2 guodeganggdg guodegangGDG 于 2013.07.01 14:11 提问

iPhone,不知道为啥视图变成黑色的

视图变成了一个黑色的矩形,下面是画视图的代码:

- (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];
        }
    }

不知道为什么变成黑盒子了?

2个回答

gaoXxxing
gaoXxxing   2013.07.01 16:41
已采纳

可能是你绘制时超出了视图本身的边框。绘制时不能根据视图的框架画,要根据视图的边界画。

更新贝塞尔曲线的起始应该是0.0。

并且在运行时要根据视图的尺寸进行编码。

zhanglei5415
zhanglei5415   Rxr 2013.07.02 09:16

在使用UIBezierPath 画图之前,先设置绘制图形的颜色。

[[UIColor blueColor] set];
UIBezierPath *path=........

再者,你在绘图的上下文Context中多次设置了颜色,最先设置的颜色会影响到绘制的图形的颜色。所以建议在必要的地方使用
CGContextSaveGState(context) 与 CGContextRestoreGState(context) 配合使用。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!