微信输入框的粘贴图片--Swift

废话不多说,其实也是相当于给UITextField,UITextView添加自定义的系统弹出菜单。
那第一当然是先添加一个UIMenuItem

let pasteboard = UIPasteboard.generalPasteboard()
        
        if pasteboard.image != nil {
            let menuController = UIMenuController.sharedMenuController()
            let pasteMenuItem = UIMenuItem.init(title: "粘贴", action: "pasteImage")
            menuController.menuItems = [pasteMenuItem]
            menuController.menuVisible = true
        }

然后在程序里加入下面这个方法,这个方法主要用来出来那些动作是被响应的,比如说:copy,cut,paste以及自定义的一些响应方法等等,有兴趣的可以在自己的工程里试试,返回YES表示响应对应的操作,返回NO则表示不响应:(其实这里不写也是行的)

override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
        if action == "pasteImage" {
            return true
        }
        return false
    }

在然后就是显示图片咯

func pasteImage() {
let pasteboard = UIPasteboard.generalPasteboard()
            self.pasteImageView = UIImageView.init(image: pasteboard.image)
            
            UIApplication.sharedApplication().keyWindow?.addSubview(self.pasteImageView)
            self.pasteImageView.center = self.view.center
            self.pasteImageView.bounds = CGRectMake(0, 0, self.view.frame.size.width-30, (self.view.frame.size.width-30)*(pasteboard.image?.size.height)!/(pasteboard.image?.size.width)!)
            self.pasteImageView.transform = CGAffineTransformMakeTranslation(0, self.view.frame.size.height)
            
            UIView.animateWithDuration(1, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 1, options: .CurveEaseInOut, animations: { () -> Void in
                self.pasteImageView.transform = CGAffineTransformMakeTranslation(0, 0)
                }, completion: nil)
    self.view.endEditing(true)
    }

效果图


image
image

源码demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内容来自于 iOS文档中 About Text Handling in iOS 部分 ios平台提供了显示及编辑文...
    纵横而乐阅读 11,809评论 2 21
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,196评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 烧终于退了,虽然还没有完全好彻底。立春的这次发烧,让我对感冒的治疗有了一种体会,与大家分享。 其实感冒引起的发烧是...
    Tina说阅读 2,425评论 1 1
  • 有想法的人很多,最后落实了想法的人就少多了。 很多人因为担忧想法的可能缺陷而不停地忙于修改完善想法。另外一些人则担...
    铅笔芒种阅读 3,056评论 0 1