guodegangGDG
2013-07-01 06:11
采纳率: 74.1%
浏览 2.3k

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 2013-07-01 08:41
    已采纳

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

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

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • ReyZhang 2013-07-02 01:16

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

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

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题