草庐IT

drawInContext

全部标签

ios - View 层 drawInContext :UIGraphicsGetCurrentContext() not drawing

我正在尝试将UIView绘制到UIImage中。这是我正在使用的代码:UIGraphicsBeginImageContextWithOptions(myView.bounds.size,YES,0.f);[myView.layerdrawInContext:UIGraphicsGetCurrentContext()];UIImage*img=UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();我已验证myView.bounds.size有效。myView在屏幕上正确显示。但是,img是完全黑色的

objective-c - [CALayer drawInContext] 重影

我使用CALayer的自定义扩展绘制为可滚动图形,并在[MyCustomCALayerdrawInContext]中调用了一堆CGContextAddCurveToPoint。我实际上并没有绘制图形的整个长度,而是在每次UIPanGestureRecognizer更新以反射(reflect)新的水平偏移时重新绘制图层的内容。这样,我只绘制图形的可见部分,层的边界只延伸到屏幕的大小。[MyCustomCALayersetNeedsDisplay]在图形数据更改或平移偏移更改时被调用,然后导致[MyCustomCALayerdrawInContext]被调用。但是,每当我在平移过程中重新绘

ios - 在 iOS 上,setNeedsDisplay 确实不会导致 drawRect 被调用...除非 CALayer 的显示或 drawInContext 最后调用 drawRect?

我不是很明白CALayer的display和drawInContext与View中的drawRect有什么关系。如果我有一个每1秒设置一次[self.viewsetNeedsDisplay]的NSTimer,那么每1秒调用一次drawRect,如内部的NSLog语句所示drawRect的。但是如果我将CALayer子类化并将其用于View,如果我将display方法设为空,那么现在永远不会调用drawRect。更新:但是display每1秒调用一次,如NSLog语句所示。如果我删除那个空的display方法并添加一个空的drawInContext方法,同样,永远不会调用drawRect

ios - CAayer - (void)drawInContext :(CGContextRef)ctx is never called

我尝试通过子类化使用CALayer进行绘制。我知道有一些关于我已经看过其中大部分的帖子,并遵循了给出的解决方案但没有成功。比如设置帧大小。这是代码。提前需要一些帮助////NewView.m//layerPractise#import"NewView.h"#import"QuartzCore/QuartzCore.h"#import"NewLayer.h"#import"NewLayer2.h"@interfaceNewView(){//NSMutableArray*_normalizedValues;}@end@implementationNewView@synthesize_con

ios - 如何提高 CGContextDrawPath/drawInContext : 的速度

我在下面有以下代码,它基本上是PieChart的一个切片,其中有许多切片。每个切片都在它自己的CALayer中绘制,并使用addSublayer:添加到自定义View层。问题是我在用户拖动手指时动态更新饼图(他们可以通过拖动来编辑饼图值)。它运行良好,但在重新绘制这些饼图“切片”时存在非常明显的滞后。我查看了iOSProfiling工具,它显示>50%的时间在CGContextDrawPath()中,因为每次用户移动一定程度时它都必须重新绘制饼图切片.我的问题是,我可以做些什么来提高这段代码的速度?有什么我想念的吗?另请注意,这段代码在iPad2上运行良好(可接受的fps水平),但在i

ios - CALayer 子类 "drawInContext"调用但不绘制?

我正在尝试在CALayer子类中绘制。drawInContext使用setNeedsDisplay调用,但未绘制任何内容。在这里做什么/出错了?-(void)drawInContext:(CGContextRef)ctx{CGContextSetFillColorWithColor(ctx,[UIColorredColor].CGColor);[[UIBezierPathbezierPathWithRect:CGRectMake(100,100,100,100)]fill];[@"Vowel"drawAtPoint:CGPointMake(0,0)withFont:[UIFontfon

ios - Swift 中的自定义 UI 元素 : Subclassing CALayer and overriding drawInContext results in pixelated drawing

我目前正在学习如何实现自定义控件。我不可避免地偶然发现了CALayer的可能性,因为在需要执行复杂的动画时使用UIImage不够灵活。我想将UIView用作CALayer的“容器”,以便它的宽度和高度始终与UIView相同(出于灵active目的)。我继承了CALayer并重写了drawInContext()方法。这是我在屏幕上得到的结果:这幅画看起来像素化且模糊。我正在使用PaintCode为我生成绘图代码。这是自定义CALayer:classSegmentActive:CALayer{funcframeSetup()->CGRect{letframeWidth:CGFloat=su

iphone - CALayer drawInContext 无法在视网膜显示器上绘制 1px 线

我想用2种不同颜色的1px线条绘制双色线条。我有很多代码,所以我在尝试解释后将其放入。如果我使用uiviewdrawRect方法,当我关闭抗锯齿时它工作正常,但是当我使用图层的drawLayerInContext时,它要么显示一条纯线,要么显示2条纯线关闭抗锯齿的2px或打开抗锯齿的两条2px半透明线。我设法获得了与UIView的drawRect方法类似的行为,方法是创建一个带有自定义上下文的图像,我可以在其中指定比例:UIGraphicsBeginImageContextWithOptions([selfbounds].size,NO,0.f);//0.fforscalemeans"

CALayers drawInContext 中的 iOS 绘图在视网膜上像素化或模糊

我有一个自定义的UIView可以在覆盖的地方绘制一些东西-(void)drawRect:(CGRect)rect这很好用,并且在视网膜屏幕上产生了清晰的结果。但是,现在我想使绘图所基于的属性可动画化。创建动画属性似乎只能在CALayer上进行,因此我没有在UIView中进行绘图,而是创建了一个自定义的CALayer子类并执行里面的图-(void)drawInContext:(CGContextRef)ctx我在此函数中使用的绘图代码与我在自定义UIView的drawRect函数中使用的绘图代码几乎完全相同。结果看起来是一样的-然而,它不是视网膜分辨率而是像素化(大方形像素)如果我把se
12