我想知道如何在控制器定位点周围绘制一个圆圈。
这不符合希望
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(contextRef, 2.0);
CGContextSetRGBFillColor(contextRef, 0, 0, 1.0, 1.0);
CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0);
CGRect circlePoint = (CGRectMake(self.frame.size.width / 2, self.frame.size.height / 2, 10.0, 10.0));
CGContextFillEllipseInRect(contextRef, circlePoint);
答案 0 :(得分:4)
我认为使用UIBezierPath绘制圆圈非常容易。您需要做的就是创建UIView的子类并创建UIBezierPath。我使用UIBezierPath创建了一个示例:
创建一个名为CirecleView的UIView的子类。添加以下代码:
#import "CircleView.h"
@implementation CircleView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)drawRect:(CGRect)rect
{
CGFloat rectX = self.frame.size.width / 2;
CGFloat rectY = self.frame.size.height / 2;
CGFloat width = 100;
CGFloat height = 100;
CGFloat centerX = rectX - width/2;
CGFloat centerY = rectY - height/2;
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(centerX, centerY, width, height)];
[[UIColor blackColor] set];
[bezierPath stroke];
}
@end
将控制器的视图类更改为CircleView。请看下面的图片。
多数民众赞成。运行代码以显示控制器的视图。以下是输出:
您可以从here
中删除代码示例答案 1 :(得分:1)
你只需要翻译到第一点
cgContextRef.translateBy(x:circlePoint.x, y:circlePoint.y)
注意这是Swift 3,它可能与其他语言不同,只是搜索"翻译cgcontext"