构建功能,类似于Snapchat的贴纸。 制作照片,添加贴纸(表情符号),发布图像。 我当前的视图层次结构是:
用户用户照片的UIImageView,就像在Snapchat中一样占据整个屏幕。 UI元素添加在不同的视图中,但在用户的UIImageView之上。
我查看截图的代码:
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let imageToData = UIImageJPEGRepresentation(img!, 0.2) {
//saving imageToData to Firebase.
}
但是这会获取主视图中的所有内容,包括UI元素。
一个选项是限制用户的UIImageView照片,以便UI元素不会覆盖它。然后我们可以制作有限视图的屏幕截图。 但这不是应用程序的用户体验应该是什么。
我想到的另一个选择是使用UIElements将用户的UIImageView照片放在视图顶部。然后添加所有表情符号。但这将涵盖所有UI元素。
如何制作用户UIImageView照片+表情符号的截图 - UIElements?
答案 0 :(得分:0)
根据您对我的评论的回答,您只需要按如下方式设置图像层次结构:
我注意到你说你需要边缘到边缘的图像视图,我不明白为什么这对于上述层次结构来说是一个问题,除非我因为你可以做错而遗漏了什么子视图B在主视图上左右拉伸,然后将图像视图(D)设置为边对边拉伸。
根据您的上述代码修改了一些代码。在以下代码中,viewB
是对B视图的引用。
UIGraphicsBeginImageContextWithOptions(viewB.bounds.size, viewB.isOpaque, 0.0)
viewB.drawHierarchy(in: viewB.bounds, afterScreenUpdates: true)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let imageToData = UIImageJPEGRepresentation(img!, 0.2) {
//saving imageToData to Firebase.
}