这似乎是一个愚蠢的问题,或者我只是累了,但我没有得到我想要的结果。 我不确定我是否得到任何结果,因为我看不到我的线条。 有人可以告诉我我做错了什么吗?
- (void)drawCenterPlus
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 20);
[[UIColor redColor] setStroke];
CGPoint hStart;
CGPoint hEnd;
CGPoint vStart;
CGPoint vEnd;
hStart.x = self.center.x - 20.0;
hStart.y = self.center.y;
hEnd.x = self.center.x + 20.0;
hEnd.y = self.center.y;
vStart.x = self.center.x;
vStart.y = self.center.y - 20.0;
vEnd.x = self.center.x;
vEnd.y = self.center.y + 20.0;
//line 1
CGContextBeginPath(context);
CGContextMoveToPoint(context, hStart.x, hStart.y);
CGContextAddLineToPoint(context, hEnd.x, hEnd.y);
CGContextStrokePath(context);
//line 2
CGContextBeginPath(context);
CGContextMoveToPoint(context, vStart.x, vStart.y);
CGContextAddLineToPoint(context, vEnd.x, vEnd.y);
CGContextStrokePath(context);
}
提前谢谢你。
------------------------------------------------------- 其他信息 ------------------------------------------
实际上,这是从viewDidLoad调用的。 我只是想在视图的中心画一个"+"。 我使视图具有不同的颜色,以便可以看到"+"。 "+"可以用黑色绘制,我只是想能够看到它。 是的,我可以在屏幕上放置文本"+",但最终我需要将其绘制在矩形内。
我将再次尝试使用空白视图,以查看图形是否隐藏在子视图后面。 我们拭目以待。 再次感谢您的帮助。
-------------------------------------------------------最新方法-----------------------------------------------
还行。 只是一个具有一个视图的新项目,该视图(希望)在屏幕中间只有红色的"+"。 但什么都没有显示。 我做错了什么?
@implementation TESTViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 20);
[[UIColor redColor] setStroke];
CGPoint hStart;
CGPoint hEnd;
CGPoint vStart;
CGPoint vEnd;
hStart.x = self.view.center.x - 20.0;
hStart.y = self.view.center.y;
hEnd.x = self.view.center.x + 20.0;
hEnd.y = self.view.center.y;
vStart.x = self.view.center.x;
vStart.y = self.view.center.y - 20.0;
vEnd.x = self.view.center.x;
vEnd.y = self.view.center.y + 20.0;
//line 1
CGContextBeginPath(context);
CGContextMoveToPoint(context, hStart.x, hStart.y);
CGContextAddLineToPoint(context, hEnd.x, hEnd.y);
CGContextStrokePath(context);
//line 2
CGContextBeginPath(context);
CGContextMoveToPoint(context, vStart.x, vStart.y);
CGContextAddLineToPoint(context, vEnd.x, vEnd.y);
CGContextStrokePath(context);
}
检查context
的值 - 我猜它可能nil
.
如果将此代码放在UIView
子类的 drawRect
方法中,它应该可以工作,因为您将具有有效的上下文。
或者,您可以创建自己的 UIImage 上下文,在其中绘制形状并将图像添加为子视图。 例如
- (void)drawCenterPlus {
UIGraphicsBeginImageContext(self.view.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 20);
[[UIColor redColor] setStroke];
CGPoint hStart;
CGPoint hEnd;
CGPoint vStart;
CGPoint vEnd;
hStart.x = self.view.center.x - 20.0;
hStart.y = self.view.center.y;
hEnd.x = self.view.center.x + 20.0;
hEnd.y = self.view.center.y;
vStart.x = self.view.center.x;
vStart.y = self.view.center.y - 20.0;
vEnd.x = self.view.center.x;
vEnd.y = self.view.center.y + 20.0;
//line 1
CGContextBeginPath(context);
CGContextMoveToPoint(context, hStart.x, hStart.y);
CGContextAddLineToPoint(context, hEnd.x, hEnd.y);
CGContextStrokePath(context);
//line 2
CGContextBeginPath(context);
CGContextMoveToPoint(context, vStart.x, vStart.y);
CGContextAddLineToPoint(context, vEnd.x, vEnd.y);
CGContextStrokePath(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
}
CGContextRef context = UIGraphicsGetCurrentContext();
将为零...您基本上希望将此代码添加到绘图代码中,除非您要添加静态视图或图像来表示十字。
当前上下文不会是视图对象,除非它具有焦点,这在调用drawRect:
方法时自动发生。
您可以交替绘制到图像并将其添加到图像视图中,您可以在 did 加载中执行此操作,并且从该点开始绘制将自动进行。