iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了可可触摸 – CALayer和屏幕外渲染大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Paging UIScrollView,其contentSize足以容纳一些小的UIScrollViews进行缩放,viewForZoomingInScrollView是一个viewController,它包含一个用于绘制PDF页面的CALayer.这使我能够像ibooks PDF阅读器一样浏览PDF.

绘制PDF(平铺图层)的代码位于:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;

只需在可见屏幕上添加页面”即可自动调用方法.当我更改页面时,在绘制所有图块之前会有一些延迟,即使已经创建了对象(页面).

我想要做的是在用户滚动到它之前渲染下一页,从而防止可见的平铺效果.但是,我发现如果图层位于屏幕外,将其添加到scrollview,则不会调用drawLayer.

这里有什么想法/常见问题吗?

我努力了:

[viewController.view.layer setNeedsLayout]; 
[viewController.view.layer setNeedsDisplay];

注意:这是在功能上复制ibooks的事实在完整应用程序的上下文中是无关紧要的.

解决方法

正如我上面提到的,如果它们在屏幕外,CALayers不会渲染.

我最终没有直接将PDF绘制到图层,而是在需要时将PDF页面渲染为图像(渲染1页加减一个焦点页面)

这是渲染代码

-(UIImage *)renderPDFPageToImage:(int)pagenumber//NSOPERATION?
{
 //you may not want to peRMANently (app lifE) retain doc ref

 CGSize size = CGSizeMake(x,y);     
 UIGraphicsBeginImageContext(sizE);
 CGContextRef context = UIGraphicsGetCurrentContext();

 CGContextTranslateCTM(context,750);
 CGContextScaleCTM(context,1.0,-1.0);

 CGPDFPageRef page;  //Move to class member 

    page = CGPDFDocumentGetPage (myDocumentRef,pagenumber);
    CGContextDrawPDFPage (context,pagE);

 UIImage * pdfImage = UIGraphicsGetImageFromCurrentImageContext();//autoreleased
 UIGraphicsEndImageContext();
 return pdfImage;

}

大佬总结

以上是大佬教程为你收集整理的可可触摸 – CALayer和屏幕外渲染全部内容,希望文章能够帮你解决可可触摸 – CALayer和屏幕外渲染所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。