这似乎是一个愚蠢的问题,或者我只是累了,但我没有得到我想要的结果。我不确定我得到任何结果,因为我看不到我的台词。有人可以告诉我我做错了吗?
- (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);
}
答案 0 :(得分:1)
检查context
的值 - 我猜它可能是nil
。
如果将此代码放在UIView
子类的drawRect
方法中,它应该有效,因为您将拥有有效的上下文。
或者,您可以创建自己的UIImage上下文,在其中绘制形状并将图像添加为子视图。 E.g。
- (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];
}
答案 1 :(得分:0)
CGContextRef context = UIGraphicsGetCurrentContext();
将为零...您基本上想要将此代码添加到绘图代码中,除非您想添加静态视图或图像来表示交叉。
当前上下文不会是您的视图对象,除非它具有焦点,这在调用drawRect:
方法时自动发生。
您可以交替绘制到图像并将其添加到图像视图中,您可以在加载时执行此操作,并且绘图将从该点自动发生。