swift - 如何使用手势在 UIImageView 上绘制表情符号
问题描述
希望大家在这次疫情中都平安。
我一直在尝试设计一个类似于 SnapChat 的应用程序,自从一周以来我一直陷入一个问题,我没有从 gitHub 获得任何库或从 stackOverFlow 获得任何代码参考。我必须在使用UIGraphicsGetCurrentContext()的 UIImageView 上使用滑动手势绘制各种表情符号线 我面临的问题是管理表情符号之间的相等空间。我附上我到目前为止完成的工作的屏幕截图。任何帮助,将不胜感激。提前致谢
func drawLineFrom(_ fromPoint: CGPoint, toPoint: CGPoint) {
// isDrawingEmoji is used as a boolean to manage simple line drawing or emoji drawing.
if isDrawingEmoji == true {
UIGraphicsBeginImageContext(topImageView.frame.size)
let context = UIGraphicsGetCurrentContext()
context?.setAlpha(1.0)
topImageView.image?.draw(in: self.img.frame)
if let emoji = selectedEmoji.cgImage {
context?.draw(emoji , in: CGRect(x: toPoint.x , y: toPoint.y, width: 50, height: 50))
}
topImageView.clipsToBounds = true
topImageView.image = UIGraphicsGetImageFromCurrentImageContext()
topImageView.alpha = 1.0
UIGraphicsEndImageContext()
}
解决方案
我假设您使用的是平移手势识别器而不是滑动手势识别器?
您需要编写代码来获取从手势识别器接收到的点,并将它们视为线段的端点。然后,您将定期沿点之间的空间均匀地应用您的表情符号。
如果您需要更详细的帮助,则需要发布您当前的绘图代码。
推荐阅读
- c++ - 类中定义的方法在 main 中调用时不返回任何内容
- javascript - 在单线程环境中由可变数据类型引起的典型问题是什么?
- javascript - 调整幻灯片的图像大小
- java - 无法调用 DefaultBootstrap.bootstrap();自己的opensaml解组方法中的方法
- android - Admob 奖励广告服务器端验证
- json - 如何在 upickle 中读取带有由缺失字段序列化的可选字段的 json
- spring - 如何将 Strangler Pattern 与旧的 Struts 1 应用程序应用到 Spring 应用程序中
- javascript - Google 表单的 Google Apps 脚本错误
- stm32 - 是否可以在 stm32L USART 上同时启用驱动程序启用信号和硬件地址唤醒?
- git - Git用不同的账户推送我的分支