IOS开发仿微信消息长按气泡菜单实现效果

目录
  • 正文
  • 使用方法
    • 导入项目
    • 使用
  • 对比微信实现效果

正文

话不多说,直接上效果图

使用方法

导入项目

代码地址:github.com/shangjie119…

SJPopMenu文件夹拖入到工程或者使用pod导入工程

pod 'SJPopMenu'

这个组件降低与原工程的耦合度,几乎不需要改动原工程代码。

使用

  • 显示: [[SJPopMenu menu] showBy:xxxxxx]
  • 需实现 SJCustomSelectTextView 里面方法,如果是自定义textView,只需将 SJCustomSelectTextView 的父类改为项目使用的textView即可
  • controller中需实现3个方法并且发送通知,使滚动时正确显示menu
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SJChangePopMenuIfNeeded" object:nil];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SJShowPopMenuIfNeeded" object:nil];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"SJShowPopMenuIfNeeded" object:nil];
    }
}
  • 点击menu action回调使用 menu.itemActions

对比微信实现效果

1、长按自动选择所有文本

2、选中部分文字增加全选功能

3、选中部分文字目前支持 复制  转发  都要用选中部分文本

4、乱拖选中文本  menu位置要变化(手松开才显示menu好像做不到,改成menu位置实时变化)

5、拖动当前cell滑动隐藏menu,停止滑动显示menu  (改成滑动就隐藏menu)

6、微信显示menu时,再收到消息暂时不显示新消息,menu消失时新消息才出来(改成接收新消息滑动,取消menu。微信只要按住聊天页面,新消息都不会马上刷新出来,感觉这个需要耦合度较高,所以未做)

7、长按显示菜单 再长按 过程 菜单取消   手指松开 微信选中一部分 (改成手指松开,还是全选)

8、显示菜单  有时点其他区域 textView还是全选中状态 ??? 这是个bug!! 偶现  愁人ing……

点击红色区域,menu不会消失,目前没有好方法。

以上就是IOS开发仿微信消息长按气泡菜单实现效果的详细内容,更多关于OS 消息长按气泡菜单的资料请关注我们其它相关文章!

(0)

相关推荐

  • IOS开发仿微信消息长按气泡菜单实现效果

    目录 正文 使用方法 导入项目 使用 对比微信实现效果 正文 话不多说,直接上效果图 使用方法 导入项目 代码地址:github.com/shangjie119… 将SJPopMenu文件夹拖入到工程或者使用pod导入工程 pod 'SJPopMenu' 这个组件降低与原工程的耦合度,几乎不需要改动原工程代码. 使用 显示: [[SJPopMenu menu] showBy:xxxxxx] 需实现 SJCustomSelectTextView 里面方法,如果是自定义textView,只需将 SJ

  • IOS开发仿微信右侧弹出视图实现

    IOS开发仿微信右侧弹出视图实现 微信首页的+号,点击之后会弹出一个更多的视图,这个视图如何实现呢? 实现该效果可能需要以下技术要点: 1.图片拉伸,通过拉伸图片的中间的较小区域来保持图片的边上的形状 2.仿射变换,用到仿射变换的缩放,平移和合并,视图动画 3.navigationBar的样式设置 实现效果,如下: 本Demo图片来源微信安装包解压得到的图片 实现代码: // // ViewController.m // appXX-微信更多工具栏 // // Created by MRBean

  • iOS高仿微信文章悬浮球功能

    前言 微信在最新版本6.6.7,新加了一个文章悬浮球功能.当你正在阅读文章的时候,突然有好友发来了紧急消息,你需要立即回复.又或者你刚好路过小吃店,需要临时打开微信支付,等等临时中断阅读的情况.以前只有退出文章详情页面,处理完事情之后,再挨着挨着找到原来的文章.对于我们这种重度微信使用者来说,每次遭遇这种情况,真的很蛋疼.所以,当这个功能推出的事情,立马更新了最新版本,这个功能感觉就像遇到了知心人一样,用起来十分顺手.可以通过下面的动图感受一下 其实悬浮球的概念早就有了.比如360助手的流量监控

  • iOS高仿微信表情输入功能代码分享

    最近项目需求,要实现一个类似微信的的表情输入,于是把微信的表情扒拉出来,实现了一把.可以从这里下载源码.看起来表情输入没有多少东西,不外乎就是用NSTextAttachment来实现图文混排,结果在实现的过程中遇到了很多小问题,接下来会一一介绍遇到过的坑.先上一张效果图: 一.实现表情选择View(WKExpressionView) 具体的实现就不细说了,主要功能就是点击表情时,将对应表情的图片名称通知给delegate. 二.实现表情textView(WKExpressionTextView)

  • iOS高仿微信相册界面翻转过渡动画效果

    点开微信相册的时候,想要在相册图片界面跳转查看点赞和评论时,微信会采用界面翻转的过渡动画来跳转到评论界面,好像是在图片界面的背面一样,点击完成又会翻转回到图片界面,这不同于一般的导航界面滑动动画,觉得很有意思,于是自己学着做了一下,其实也很简单,下面是实现的类似的效果图: 在图片界面点击右下角的查看评论会翻转到评论界面,评论界面点击左上角的返回按钮会反方向翻转回图片界面,真正的实现方法,与传统的导航栏过渡其实只有一行代码的区别,让我们来看看整体的实现. 首先我们实现图片界面,这个界面上有黑色的背

  • Android仿微信界面的导航以及右上角菜单栏效果

    下面是安卓开发仿微信界面的代码. 分为3步, 第一步是界面的编写; 第二步是导航界面; 第三步是右上角菜单栏. 开始第一步前先预览一下效果. 第一步,界面. 界面的思路是利用ViewPager+Fragment实现,所以activity_main.xml中添加一个ViewPager.顶部和底部include的顶部栏和底部栏后面再说. MainActivity的界面activity_main.xml: <?xml version="1.0" encoding="utf-8

  • iOS开发中常用的各种动画、页面切面效果

    今天主要用到的动画类是CALayer下的CATransition至于各种动画类中如何继承的在这也不做赘述,网上的资料是一抓一大把.好废话少说切入今天的正题. 一.封装动画方法 1.用CATransition实现动画的封装方法如下,每句代码是何意思,请看注释之. #pragma CATransition动画实现 - (void) transitionWithType:(NSString *) type WithSubtype:(NSString *) subtype ForView : (UIVi

  • iOS开发之微信聊天工具栏的封装

    微信大家基本上都用过,今天要做的就是微信的聊天工具条.聊天工具条还是比较复杂的,其中包括发送表情,发送文字,发送图片,发送声音,拍照等等功能,下面给出发送录音,文字,表情的代码,其他的和这几样类似.还是那句话百字不如一图,先来几张效果图吧. 在封装聊天工具条的的时候表情键盘是之前封装好的,所以拿过来就可以用的啦.因为不管是工具条还是表情键盘都是用约束来控件大小的,所以横屏也是没问题的,在大屏手机上也是没问题的.下面将会一步步讲解如何封装下面的聊天工具条.主要是对工具条的封装,表情键盘在这就不做讲

  • iOS开发--仿新闻首页效果WMPageController的使用详解

    这一篇记录的是iOS开发中第三方库WMPageController控件的使用方法,主要是用来分页显示内容的,可以通过手势滑动来切换页面,也可以通过点击标题部分来切换页面,如下图所示: 使用方法: 新建工程DemoTest1,然后通过cocoapods引入WMPageController到项目中,Podfile文件的内容如下: platform :ios,'7.0' target 'DemoTest1' do pod 'WMPageController', '~> 1.6.4' end 方法一:

  • PHP微信开发之微信消息自动回复下所遇到的坑

    微信回复原理: 当普通微信用户向公众账号发送消息时,微信服务器首先收到用户发送的消息: 然后将用户信息和消息打包成XML格式的数据包,再将这个XML数据包通过POST方法提交到开发者设置的URL上. 疑问一:为何使用$GLOBALS["HTTP_RAW_POST_DATA"]保存POST过来的数据,而非$_POST数组? 回答: POST只能保存标准的数据类型,对于XML.SOAP或Application/Octet-steam之类的内容则无法解析. 而$GLOBALS["H

随机推荐