可可触摸 – CALayer和屏幕外渲染

可可触摸 – CALayer和屏幕外渲染,第1张

概述我有一个Paging UIScrollView,其contentSize足以容纳一些小的UIScrollViews进行缩放,viewForZoomingInScrollView是一个viewController,它包含一个用于绘制PDF页面的CALayer.这使我能够像ibooks PDF阅读器一样浏览PDF. 绘制PDF(平铺图层)的代码位于: - (void)drawLayer:(CALaye 我有一个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和屏幕外渲染所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1084925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存