我想用边框制作自定义UIView。这是我的代码:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 4.0);
CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextAddRect(context, self.frame);
CGContextStrokePath(context);
}
结果如下:
这张照片上的所有三张UIView都是我的自定义视图,但只有大UIView才有边框。我不明白为什么其他人没有边界。有什么问题?
答案 0 :(得分:3)
您需要本地坐标。变化
CGContextAddRect(context, self.frame);
到
CGContextAddRect(context, self.bounds);
答案 1 :(得分:0)
您未指定子视图的类名
你为什么不试试这个
anyView.layer.borderColor = [UIColor redColor].CGColor;
anyView.layer.borderWidth = 5.0f;
或者在自定义视图中添加此方法
-(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中。在我看来,它必须是自我绘制的。