我想要渲染的部分视图是不能预先确定的,这意味着我不能将小部分的视图层次结构设置为自己的UIVIEw(因此是CALayer).
我的想法…
我有一个想法,但如果我要成功,我需要一些方向.如果我在UIVIEw(或CALayer)上创建一个类别,添加一个方法:
[UIVIEw renderSubframe:(CGFrame)frame];
怎么样?嗯,我在想,如果一个虚拟的视图创建了子框架的大小,那么视图可能暂时移到这个.然后,虚拟视图的图层可以调用renderInContext:,从而实现高效,快速的获取视图.
所以…
我真的不是速度与CALayer / Quartz核心的东西…这将有机会工作吗?如果没有,我可以实现什么样的另一种方式 – 最有效的方法是达到同样的效果(或者还有其他人已经面临这个问题并提出了不同的解决方案)?
解决方法 这是我最后写的类别.不如我第一次想到的那样努力,感谢一个方便的CGAffinetransform.#import "UIVIEw+RenderSubframe.h"#import <QuartzCore/QuartzCore.h>@implementation UIVIEw (RenderSubframe)- (UIImage *) renderWithBounds:(CGRect)frame { CGSize imageSize = frame.size; UIGraphicsBeginImageContextWithOptions(imageSize,NO,0.0); CGContextRef c = UIGraphicsGetCurrentContext(); CGContextConcatCTM(c,CGAffinetransformMakeTranslation(-frame.origin.x,-frame.origin.y)); [self.layer renderInContext:c]; UIImage *screenshot = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); return screenshot;}@end总结
以上是内存溢出为你收集整理的iphone – 我如何欺骗[CALayer renderInContext:]只渲染图层的一部分?全部内容,希望文章能够帮你解决iphone – 我如何欺骗[CALayer renderInContext:]只渲染图层的一部分?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)