- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想加载一个包含 uibezierPath 的类的实例,并在应用程序启动时重绘这些先前的路径。字典返回正确的实例,但我无法绘制路径: View 是在 Storyboard中创建的,所以我使用了 initWithCoder,如果我使用 viewDidLoad,则不会调用此方法。错误是:
previousArrays : ( { firstPath = ""; }, { firstPath = ""; }, { firstPath = ""; }, { firstPath = ""; } ) Dec 30 17:02:36 iPhone MyProject[1818] : CGContextAddPath: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
这是我的代码:(触摸后,路径被保存,然后再次启动应用程序时,出现错误。但是当我绘制时,没有问题。绘制路径有效。它是在返回时app,并在initWithCoder中绘制,问题就出现了。)
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithCGPath:myPath];//nscoding compliant
DataForPath *firstPath = [[DataForPath alloc] init];
firstPath.path = bezierPath;
firstPath.colorInArray = @(currentColor);
NSDictionary *dict = @{@"firstPath":firstPath};
[SaveData saveData:dict];
}
-(id)initWithCoder:(NSCoder *)aDecoder{
if ( !(self=[super initWithCoder:aDecoder])) return nil;
//...
myPath = CGPathCreateMutable();
CGContextRef context = UIGraphicsGetCurrentContext();
NSArray *previousArrays = [SaveData loadData];
//NSLog("previousArrays : %@", previousArrays )...
for ( NSDictionary*dict in previousArrays){
UIBezierPath *eachPath = dict[@"path"];
int color = [dict[@"colorInArray"] intValue];
UIColor *objectColor = [self.possibleColor objectAtIndex:color];
CGContextAddPath(context, eachPath.CGPath);
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);
CGContextDrawPath(context, kCGPathStroke);
/*
CGContextSetStrokeColorWithColor(context, objectColor.CGColor);
CGContextSaveGState(context);
[eachPath stroke];
CGContextRestoreGState(context);
*/
}
return self;
}
编辑:for 循环中的先前路径未绘制?
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
if ( firstLaunchWithPreviousPaths ){
for ( NSDictionary*dict in previousArrays){
NSLog(@"firstLaunch"); //is called
UIBezierPath *eachPath = dict[@"path"];
CGContextAddPath(context, eachPath.CGPath);
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);
CGContextDrawPath(context, kCGPathStroke);
//nothing is drawn?
}
}
//with touchesEnd : this works
/*
CGContextAddPath(context, myPath);
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);
CGContextDrawPath(context, kCGPathStroke);
*/
}
最佳答案
错误消息告诉您问题所在。你是说:
CGContextRef context = UIGraphicsGetCurrentContext();
但是 initWithCoder:
中没有当前上下文。
只能在有图形上下文的地方进行绘制。要么制作一个,要么将您的代码移动到有一个的地方(例如 drawRect:
)。
或者,如果您正在尝试构造一个可变的 CGPath,请不要引用任何图形上下文:使用路径,而不是上下文。 CGMutablePath 有一整套自己的函数来构造路径。但是当然你不能抚摸或绘制它 - 它只是一个路径。当您拥有图形上下文时,您将能够在稍后对其进行描边或绘制;您为上下文提供路径,现在您可以抚摸或绘制它。描边和绘图只能在图形上下文中发生。而你这里没有。
关于ios - cgcontext严重错误: draw bezierPath in initwithcoder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27708683/
我在为 MKMapOverlayView 创建的 CGContext 中执行一些 CG 绘图操作。在我的上下文中绘制之后,我创建了一个图像并将其粘贴到 MapKit 提供的上下文中。 - (void)
我有一个 CGBitmapContext (bitmapContext),我想将它的一些矩形部分 (rect) 绘制到当前 CGContext (context) >). 现在我就是这样做的: CGC
各位,这是我的代码: - (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx { //backgrou
我正在使用代码在 CGContext 上显示 pdf 页面 - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context {
在我的 iPhone 项目中,我有一个 UIView,我在其中实现了 drawRect 方法: - (void)drawRect:(CGRect)rect { CGContextRef con
我正在尝试在 UIView draw(_:) 中创建自己的 CGContext。这里: override func draw(_ rect: CGRect) { //let c
我正在UIView drawRect函数中绘制一个形状,该形状涉及剪切路径,然后在后面添加彩色块,以便颜色具有剪切路径的形状。但是,由于某些原因,路径的线条无法顺利伸出;如果抗锯齿功能无法正常使用,
我正在使用以下代码缩小UIImage: let image = UIImage(contentsOfFile: imageUrl.path!)!.CGImage let
我正在尝试使用 Core Graphics 从另一个线程在自定义 UIView 中进行无限绘图。无法获取当前的 CGContext,因此我尝试创建一个新的。但我不知道如何将其应用到 View 中。 这
在测试我的应用程序是否存在任何错误时,我注意到在模拟器中,当我调用其中一个函数将图像设置为 UIImageView 时,会抛出一堆 CGContext 错误,并且图像永远不会被设置。然而,在我的设备上
我有一个 UIView,它有 3 个自定义 subview ,其类(目前)称为 LVStemp 并表示树中的节点。 LVStemp 的框架比节点本身大,因为它还包含一些位于节点外部的绘图(尚未编码)。
据我所知,您可以使用两种方法在 CGContext 中绘制渐变,即 drawLinearGradient 和 drawRadialGradient。我正在寻找一种定义椭圆渐变的方法,我可以在其中定义
我正在尝试初始化 CGContext ( API ) let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirector
问题:如何在 CGContext 下显示背景图片? 我使用 Storyboard创建了一个 View Controller ,并放置了一个带有全屏背景图像的 View 。然后,使用相同的 View C
我正在尝试绘制以相等角度分隔的矩形。为此,我首先绘制一个 CGPath,然后对上下文应用转换。我连续做了5次。这是我的代码和输出。如您所见,屏幕截图中的输出不正确,矩形倾斜,不知道为什么。需要知道我做
我正在用 CGContext 渲染一个 NSAttributedString,但是当它渲染文本时是颠倒的 :( 这是我想出的: override func draw(with box: PDFDisp
我编写了一个渲染函数,每 1/60 秒调用一次。如下所示。本质上,它以使用正弦的放射状图案呈现 40 条线。看起来像这样http://imgur.com/a/kPKtT .当我在我的 iPhone 6
我有这段代码可以呈现一个内部带有动态文本的自定义滑动条 handle 。问题是我无法将其缩放到视网膜分辨率。它可以在所有设备上正确绘制并且大小合适,但在视网膜上分辨率较低。如何更改此代码以使最终图像分
当具有不同颜色的路径使用 CGContext 绘制在先前路径的顶部时,如何删除路径? 最佳答案 CGContextBeginPath() 在创建新路径的过程中总是丢弃之前的路径。 关于ios - CG
伙计们! 我需要绘制一些图像到 CGContext。这是相关代码: CGContextSaveGState(UIGraphicsGetCurrentContext()); CGContextRef c
我是一名优秀的程序员,十分优秀!