UIView drawRect问题

时间:2014-03-13 08:23:57

标签: ios uiview drawrect

我想用边框制作自定义UIView。这是我的代码:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 4.0);
    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);
    CGContextAddRect(context, self.frame);
    CGContextStrokePath(context);
}

结果如下:enter image description here

这张照片上的所有三张UIView都是我的自定义视图,但只有大UIView才有边框。我不明白为什么其他人没有边界。有什么问题?

4 个答案:

答案 0 :(得分:3)

您需要本地坐标。变化

CGContextAddRect(context, self.frame);

CGContextAddRect(context, self.bounds);

答案 1 :(得分:0)

  1. 您未指定子视图的类名

  2. 你为什么不试试这个

    anyView.layer.borderColor = [UIColor redColor].CGColor;
    anyView.layer.borderWidth = 5.0f;
    
  3. 或者在自定义视图中添加此方法

    -(void)awakeFromNib{
    
        [super awakeFromNib];
    
        self.layer.borderColor = [UIColor redColor].CGColor;
        self.layer.borderWidth = 5.0f;
    
    }
    

答案 2 :(得分:0)

哟尚未将path添加到您的上下文

-(void)drawRect:(CGRect)rect
{
    [super drawRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGPathRef path = CGPathCreateWithRect(rect, NULL);
    [[UIColor blueColor] setStroke];
    CGContextSetLineWidth(context, 4.0);
    CGContextAddPath(context, path);
    CGContextDrawPath(context, kCGPathFillStroke);
    CGPathRelease(path);
}

答案 3 :(得分:0)

解决! 问题出在CGContextAddRect的self.frame中。在我看来,它必须是自我绘制的。