如何在 iOS 中在没有 UIImageView 的情况下在视图上绘制/绘制 UIIMage

Posted

技术标签:

【中文标题】如何在 iOS 中在没有 UIImageView 的情况下在视图上绘制/绘制 UIIMage【英文标题】:How to draw/paint UIIMage on view as paint without UIImageView in iOS 【发布时间】:2016-06-16 11:19:11 【问题描述】:

我正在这个应用程序中开发绘画应用程序,我正在使用 ACEDrawing 工具来绘制视图。但我必须剪下画作的特定部分并粘贴到视图的任何位置。 我可以将视图的绘画复制为图像。我的代码在这里。

在.h文件中

@property (strong,nonatomic)ACEDrawingView *DrawingViews;

@property (nonatomic, strong)UIScrollView *myScrollView;

在 .m 文件中

//creating the Drawing view
    _DrawingViews = [[ACEDrawingView alloc] initWithFrame:CGRectMake(myOrigin, 0, self.testView.frame.size.width, self.testView.frame.size.height)];
    _DrawingViews.drawTool=ACEDrawingToolTypePen;
    _DrawingViews.tag=i;
    _DrawingViews.delegate=self;
    [myScrollView addSubview:_DrawingViews];

Inside Copy 方法之后。

-(void)copy:(id)sender

ACEDrawingView *dragView = [self.myScrollView viewWithTag:currentTag];// Getting ACEDrawing View with tag
CGSize size = [_userResizableView1 bounds].size;//just for size
UIGraphicsBeginImageContext(size);
[[dragView layer] renderInContext:UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

CGContextRef context=UIGraphicsGetCurrentContext();
[image drawInRect:CGRectMake(200,200, 145, 150)];
UIGraphicsEndImageContext();

但是,我只能使用 UIImageView 将其粘贴为图像。我不知道如何将其粘贴为绘画概述,然后只能擦除或重绘。

-感谢邓肯先生先生和所有愿意回答的人。

【问题讨论】:

【参考方案1】:

UIImage 有drawInRect 等多种绘图方法。您已经了解了如何创建图形上下文。您可以使用drawInRect 将图像绘制到图形上下文中。

(请注意,您要使用较长形式的开始图像上下文,它采用比例和选项。(我不在我的 Mac 上查找函数名称。)如果您传入 0 的比例,它会创建Retina 设备上的 Retina 上下文。使用您使用的代码,它会将 Retina 图像降级为非 Retina 分辨率。)

【讨论】:

k mr duncan 我试过了,但它不起作用,注意:-实际上我必须在主视图上动态创建的视图上绘制它。 您需要编辑您的帖子并提供更多关于您正在做什么以及如何做的信息。您发布的代码何时被调用?你对它生成的图像做了什么?

以上是关于如何在 iOS 中在没有 UIImageView 的情况下在视图上绘制/绘制 UIIMage的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中保存 UIImageView 数据

如何获取 UIImageView 的尺寸,因为它在任何给定大小的 iOS 设备类别中动态显示?

如何将渐变层放置到没有框架的 UIImageView 上

在 UIImage 和 UIImageViews 中在 Swift 中释放内存

iOS 9.3 中的 UIImageView 如何渲染 UIImage?

如何在 iOS 6 中在后台播放音频文件?