Questions tagged «calayer»

CALayer是Quartz Core框架中的Core Animation类。它封装了图层的几何形状和表示。它支持该图层的几何图形及其内容的动画。

4
适用于iPhone / iPad / iOS的Fast and Lean PDF Viewer-提示和提示?
最近有许多关于绘制PDF的问题。 是的,您可以使用轻松渲染PDF,UIWebView但这不能提供您期望的优质PDF查看器所具有的性能和功能。 您可以将PDF页面绘制到CALayer或UIImage。苹果甚至提供了示例代码来展示如何在Zoomable UIScrollview中绘制大型PDF 但是同样的问题不断出现。 UIImage方法: PDF UIImage不像图层方法那样光学缩放。 CPU和内存击中产生UIImages从PDFcontext 使用它来创建一个实时渲染的新的放大级别限制/防止。 CATiledLayer方法: 将整个PDF页面绘制到上有大量开销(时间)CALayer:可以看到各个图块的呈现(即使使用tileSize进行了调整) CALayers 无法提前准备(在屏幕外渲染)。 通常,PDF查看器也占用大量内存。甚至监视苹果可缩放PDF示例的内存使用情况。 在我当前的项目中,我正在开发PDF查看器,并UIImage在单独的线程中渲染页面的A(此处也有问题!),并在比例为x1时显示它。CATiledLayer比例大于1时,渲染就会开始。iBooks采用类似的重复处理方法,就好像您滚动页面一样,在显示清晰版本之前,可以看到页面的较低分辨率版本不到一秒钟。 我在页面的每一侧都渲染了2页,以便PDF图像准备好在开始绘制之前掩盖该层。当页面距聚焦页面+2页时,页面将再次被销毁。 是否有任何见解,无论大小或明显程度如何提高Drawing PDF的性能/内存处理能力?还是这里讨论的任何其他问题? 编辑:一些技巧(信贷-卢克·麦克尼斯,VdesmedT,马特·加拉格尔,约翰): 尽可能将任何媒体保存到磁盘。 如果在TiledLayers上渲染,请使用更大的tileSize INIT频繁使用的阵列,占位符对象,alternitively另一设计方法是这一个 请注意,图像的渲染速度比 CGPDFPageRef 使用NSOperations或GCD和块来提前准备页面。 CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh); CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault);之前调用CGContextDrawPDFPage以减少绘图时的内存使用量 用docRef初始化您的NSOperations主意(内存)是一个坏主意,将docRef包装为单例。 不需要NSOperations时取消可以的话,尤其是当他们将使用内存时,请当心不要打开上下文! 回收页面对象并销毁未使用的视图 不需要任何打开的上下文后,立即关闭它们 在收到内存警告时释放并重新加载DocRef和任何页面缓存 其他PDF功能: 在PDF中获取链接(以及此处和此处) 了解PDF矩形以进行链接定位 转换PDF注释日期字符串 获取链接的目标(从/Dest数组中获取页码) 获取目录 文件标题和关键词 获取原始文本(以及此处,此处和此处(定位重点)) 搜索(和在此处)(不适用于所有PDF(有些只是显示奇怪的字符,我想这是编码问题,但不确定)-Credit BrainFeeder) CALayer和屏幕外渲染 -渲染下一页以实现快速/流畅的显示 文献资料 Quartz PDFObjects(用于元信息,注释,拇指) …
368 ios  pdf  calayer 

4
如何将透视变换应用于UIView?
我正在寻找对UIView执行透视转换(如Coverflow中所示) 有人知道这是否可能吗? 我调查了使用 CALayer所有实用的程序员Core Animation播客的并进行了遍历,但是我仍然不清楚如何在iPhone上创建这种转换。 任何帮助,指针或示例代码片段都将不胜感激!

11
使用自动版式时,如何调整CALayer的锚点?
注意:自从提出此问题以来,事情一直在发展;请参阅此处以获得近期的良好概述。 在自动布局之前,可以通过存储框架,设置锚点并还原框架来更改视图图层的锚点,而无需移动视图。 在自动布局的世界中,我们不再设置框架,但是约束似乎并没有完成将视图的位置调整回我们想要的位置的任务。您可以修改约束以重新定位视图,但是在旋转或其他大小调整事件上,这些约束将再次变为无效。 以下聪明的想法行不通,因为它会创建“布局属性(左和宽度)无效配对”: layerView.layer.anchorPoint = CGPointMake(1.0, 0.5); // Some other size-related constraints here which all work fine... [self.view addConstraint: [NSLayoutConstraint constraintWithItem:layerView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:layerView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:20.0]]; 我的目的是将layerView具有调整后的锚点的视图的左边缘设置为其宽度的一半加上20(我要从超级视图的左边缘插入的距离)。 在以自动版面布局的视图中,是否可以在不更改视图位置的情况下更改锚点?我是否需要使用硬编码值并在每次旋转时编辑约束?我希望不会。 我需要更改锚点,以便在对视图应用变换时获得正确的视觉效果。
161 ios  calayer  autolayout 


15
在-[CALayer setNeedsDisplayInRect:]中禁用隐式动画
我的-drawInContext:方法中有一个包含一些复杂绘图代码的层。我试图尽量减少需要做的绘图,所以我使用-setNeedsDisplayInRect:来仅更新已更改的零件。这很出色。但是,当图形系统更新我的图层时,它会使用淡入淡出功能从旧图像过渡到新图像。我希望它可以立即切换。 我尝试使用CATransaction关闭操作并将持续时间设置为零,但都无法正常工作。这是我正在使用的代码: [CATransaction begin]; [CATransaction setDisableActions: YES]; [self setNeedsDisplayInRect: rect]; [CATransaction commit]; 我应该改用CATransaction上的其他方法吗(我也尝试了-setValue:forKey:和kCATransactionDisableActions,结果相同)。

14
使用CALayers的圆形UIView-仅在某些角落-如何?
在我的应用程序中-有四个按钮,名称如下: 左上方 左下方 右上 底部-右 在按钮上方有一个图像视图(或UIView)。 现在,假设用户点击-顶部-左按钮。上方的图片/视图应在该特定角处四舍五入。 我在将圆角应用于UIView时遇到了一些困难。 现在,我正在使用以下代码将圆角应用于每个视图: // imgVUserImg is a image view on IB. imgVUserImg.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"any Url Here"]; CALayer *l = [imgVUserImg layer]; [l setMasksToBounds:YES]; [l setCornerRadius:5.0]; [l setBorderWidth:2.0]; [l setBorderColor:[[UIColor darkGrayColor] CGColor]]; 上面的代码将圆度应用于提供的View的每个角。相反,我只是想将圆度应用于选定的角,例如-顶部/顶部+左侧/底部+右侧等。 可能吗?怎么样?

1
这里的“实例消息的接收者类型'CALayer'是转发声明”是什么意思?
我正在将代码块从iOS4项目移植到iOS5,但是ARC遇到了一些麻烦。该代码从屏幕截图生成PDF。 PDF生成代码 UIView *captureView; ... NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [captureView.layer renderInContext:pdfContext]; UIGraphicsEndPDFContext(); renderInContext行 [captureView.layer renderInContext:pdfContext]; 产生以下错误。 Automatic Reference Counting issue Receiver type 'CALayer' for instance message is a forward declaration 有什么想法吗?

5
带有透明孔的CALayer
我有一个简单的视图(图片的左侧),并且需要为此视图创建某种叠加层(图片的右侧)。此叠加层应具有一定的不透明度,因此在下面的视图中仍部分可见。最重要的是,此覆盖层的中间应有一个圆形孔,这样它就不会覆盖视图的中心(请参见下面的图片)。 我可以轻松地创建一个这样的圆: int radius = 20; //whatever CAShapeLayer *circle = [CAShapeLayer layer]; circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath; circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius, CGRectGetMidY(view.frame)-radius); circle.fillColor = [UIColor clearColor].CGColor; 还有一个“完整”的矩形叠加层,如下所示: CAShapeLayer *shadow = [CAShapeLayer layer]; shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath; shadow.position = CGPointMake(0, 0); shadow.fillColor = [UIColor grayColor].CGColor; shadow.lineWidth = …



7
如何使CATextLayer中的文本清晰可见
我CALayer添加CATextLayer了,文本变得模糊。在文档中,他们谈论“亚像素抗锯齿”,但这对我来说意义不大。任何人都有一个代码段,可以使一些CATextLayer清晰的文本成为? 以下是Apple文档中的文字: 注意:渲染文本时,CATextLayer禁用子像素抗锯齿。仅在对文本进行光栅化的同时将其合成到现有的不透明背景中时,才可以使用子像素抗锯齿来绘制文本。在让背景像素将文本像素编织到其中之前,无法单独将子像素抗锯齿的文本单独绘制到图像或图层中。将图层的不透明度属性设置为YES不会更改渲染模式。 第二句话意味着,如果将composites其合并为,则可以得到美观的文本。existing opaque background at the same time that it's rasterized. 那太好了,但是如何合成它,如何赋予它不透明的背景,以及如何对其进行光栅化? 他们在Kiosk菜单示例中使用的代码是这样的:(它是OS X,不是iOS,但我认为它可以工作!) NSInteger i; for (i=0;i<[names count];i++) { CATextLayer *menuItemLayer=[CATextLayer layer]; menuItemLayer.string=[self.names objectAtIndex:i]; menuItemLayer.font=@"Lucida-Grande"; menuItemLayer.fontSize=fontSize; menuItemLayer.foregroundColor=whiteColor; [menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"superlayer" attribute:kCAConstraintMaxY offset:-(i*height+spacing+initialOffset)]]; [menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX relativeTo:@"superlayer" attribute:kCAConstraintMidX]]; [self.menuLayer addSublayer:menuItemLayer]; } // end of for loop 谢谢! …

17
UIView图层上的内部阴影效果?
我有以下CALayer: CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = CGRectMake(8, 57, 296, 30); gradient.cornerRadius = 3.0f; gradient.colors = [NSArray arrayWithObjects:(id)[RGB(130, 0, 140) CGColor], (id)[RGB(108, 0, 120) CGColor], nil]; [self.layer insertSublayer:gradient atIndex:0]; 我想为其添加一个内部阴影效果,但是我不确定如何执行此操作。我想我将需要绘制drawRect,但是这会在其他UIView对象的顶部添加该层,因为它应该是某些按钮后面的一个栏,所以我不知道该怎么做? 我可以添加另一层,但是同样,不确定如何实现内部阴影效果(如下所示: 感谢帮助...

7
iOS白色到透明渐变层为灰色
我在此小细节视图的底部插入了一个CAGradientLayer,该视图会在应用程序的底部弹出。如您所见,我将颜色从白色设置为清晰,但是却出现了这种奇怪的灰色调。有任何想法吗? // Set up detail view frame and gradient [self.detailView setFrame:CGRectMake(0, 568, 320, 55)]; CAGradientLayer *layer = [CAGradientLayer layer]; layer.frame = self.detailView.bounds; layer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; layer.startPoint = CGPointMake(1.0f, 0.7f); layer.endPoint = CGPointMake(1.0f, 0.0f); [self.detailView.layer insertSublayer:layer atIndex:0]; 这是有问题的视图:

6
为什么masksToBounds = YES可以防止CALayer阴影?
使用以下代码段,我向一个UIView添加了阴影效果。哪个效果很好。但是,一旦我将视图的masksToBounds属性设置为YES。阴影效果不再呈现。 self.myView.layer.shadowColor = [[UIColor blackColor] CGColor]; self.myView.layer.shadowOpacity = 1.0; self.myView.layer.shadowRadius = 10.0; self.myView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); self.myView.layer.cornerRadius = 5.0; self.myView.layer.masksToBounds = YES; // <-- This is causing the Drop shadow to not be rendered UIBezierPath *path = [UIBezierPath bezierPathWithCurvedShadowForRect:self.myView.bounds]; self.myView.layer.shadowPath = path.CGPath; self.myView.layer.shouldRasterize = YES; 您对此有什么想法吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.