我在我的自定义UIView的drawRect中绘制了一个圆圈:
- (void)drawRect:(CGRect)rect {
...
UIBezierPath *ovalPath = [UIBezierPath bezierPathWithOvalInRect:rect];
[UIColor.whiteColor setStroke];
ovalPath.lineWidth = 1;
[ovalPath stroke];
}
椭圆形总是夹在边缘上。我怎样才能避免剪辑?是唯一的方法是插入矩形吗?
答案 0 :(得分:5)
CG绘制以路径为中心的笔划 - 路径的一半,路径的一半。因此,部分笔划超出了您的视野,您无法看到它。
将矩形插入笔画宽度的一半。
CGRect rectToStroke = CGRectInset(rect, 0.5, 0.5);
UIBezierPath *ovalPath = [UIBezierPath bezierPathWithOvalInRect: rectToStroke];
使用CG或UIKit在-drawRect:
内绘制的任何内容都会进入位图上下文,该上下文大小与视图bounds
的大小相同。
如果您需要展示大于bounds.size
的内容,您有两种选择:让视图更大bounds
,或通过其他方法绘制,例如:
CALayer
或CAShapeLayer
(具有相同的警告)borderWidth
以在内容之上绘制边框(对于所有这些,您可能会发现您还需要将视图的clipsToBounds
属性设置为NO
,如果它还没有。)