更新:从阅读下面答案中的链接,我把这么多组合在一起试图将我的UIVIEw内容复制到位图上下文中,但有些事情仍然不对.我将我的内容镜像到X轴(即颠倒).我尝试使用CGContextScaleCTM(),但似乎没有效果.
我已经验证了前四行中创建的UIImage是否正确创建了一个没有奇怪旋转/翻转的UIImage,所以我在后面的调用中做错了.
// copy contents to bitmap context UIGraphicsBeginImageContext(mTextVIEw.bounds.size); [mTextVIEw.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage* image = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); [self setNeedsdisplay]; // render the created image to the bitmap context CGImageRef cgImage = [image CGImage]; CGContextScaleCTM(mContext,1.0,-1.0); // doesn't seem to change result CGContextDrawImage(mContext,CGRectMake( mTextVIEw.frame.origin.x,mTextVIEw.frame.origin.y,[image size].wIDth,[image size].height),cgImage);
有什么建议?
解决方法 这是我用来获取UIVIEw的UIImage的代码:@implementation UIVIEw (Sreenshot) - (UIImage *)screenshot{ UIGraphicsBeginImageContextWithOptions(self.bounds.size,NO,[UIScreen mainScreen].scale); /* iOS 7 */ BOol visible = !self.hIDden && self.supervIEw; CGfloat Alpha = self.Alpha; BOol animating = self.layer.animationKeys != nil; BOol success = YES; if ([self respondsToSelector:@selector(drawVIEwHIErarchyInRect:afterScreenUpdates:)]){ //only works when visible if (!animating && Alpha == 1 && visible) { success = [self drawVIEwHIErarchyInRect:self.bounds afterScreenUpdates:NO]; }else{ self.Alpha = 1; success = [self drawVIEwHIErarchyInRect:self.bounds afterScreenUpdates:YES]; self.Alpha = Alpha; } } if(!success){ /* iOS 6 */ self.Alpha = 1; [self.layer renderInContext:UIGraphicsGetCurrentContext()]; self.Alpha = Alpha; } UIImage* img = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); return img; }@end总结
以上是内存溢出为你收集整理的cocoa – 将一个UIView的绘制内容复制到另一个UIView全部内容,希望文章能够帮你解决cocoa – 将一个UIView的绘制内容复制到另一个UIView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)