MXInputTextView 继承 YYTextView类
判断是否进入选择@的人页面
选择@的群友后的处理,拼接[@群友名称],保存[@群友名称]的NSRange,以便之后删除操作。
把textViewtext根据range 分隔成两块frontText、behindText,在frontText拼上当前@信息,再重新拼接赋值给textView 设置光标位置
把textViewtext根据range 分隔成两块frontText、behindText,在frontText查找@相关信息,查找到后删除,再重新拼接赋值给textView,设置光标位置
其实那个二维码就是一个网址,你扫描完,手机就发送了一个http请求,这个GET请求发送一些数据给微信的服务器,微信收到这个请求校验以后就返回到手机,手机上出现一个确认页面,点击以后在服务器完成鉴权,然后在web端更新页面(看样子web有个监听是否完成请求的js)
选择照片好一些,因为苹果手机上的微信具有良好的安全性,如果你选择所有照片的话,可能会有一些危险的内容。这样的话,会存在安全隐患。而如果只选择某些照片,可以节省时间,可以排除一些不要的文件,还可以提高安全性。此外,根据你的需求,一般情况下也可以选择某些文件,然后手动添加和删除,这样可以降低危险源。
demo链接: https://githubcom/Xiexingda/XDRefreshgit
喜欢的话请在github给颗小星星哦😊!
先说一下用法,然后再说实现
使用方法很简单,导入头文件UIView+XDRefreshh
用一个与下拉刷新小圆圈一样大小的scrollview,把其contentSize也置为同样大小,然后把下拉刷新的小圆圈放到scrollview上,这样在下拉刷新过程中只需要根据被观察者的下拉状态去改变这个scrollview的contentoffsety即可实现小圆圈的上下移动,而不需要去渲染下拉小圆圈的frame
刷新过程主要分为三种状态
主要方法,通过kvo去观察tableview的下拉过程
实现观察者的代理 并在其中实现三种状态(非刷新,刷新,(全非)既不刷新也不非刷新)
全非状态时直接return 以屏蔽掉刷新、非刷新状态 (刷新小圆圈在下拉悬停状态时进入全非状态,待刷新完成后自动收回,这个过程应避免人为干预造成卡顿,而刷新、和非刷新状态人为拉动时都会干预到小圆圈的contentoffset所以要屏蔽掉)
非刷新状态逻辑
刷新状态逻辑
刷新
动画效果
动画结束后回到最初角度
结束刷新
到此基本刷新逻辑已经完成了 ,还有一些结束刷新时的操作就不在这里赘述了,demo里面有详细的解析,有什么不合理的地方还望大家指出。
demo链接: https://githubcom/Xiexingda/XDRefreshgit
使用方法在 该链接的ReadMe里
喜欢的话请在github给颗小星星哦😊!
最近有个需求涉及到录制一个小视频上传服务器,所以写了这个Demo,在这记录下,供学习用,主要使用的是AVFoundation 框架。
创建JCVideoRecordView时,初始化JCVideoRecordManager, JCVideoRecordManager负责管理视频采集,录制,压缩等操作,录制结束后创建JCRecordPlayerView 来循环播放录制的视频,点击确定回调给VCL。
JCVideoRecordManagerh
JCVideoRecordManagerm
demo还有很多需要完善的地方,例如视频剪裁,设备方向,闪光灯等,日后有时间继续完善。
参考
1目前只有ios版本的微信更新了折叠置顶聊天功能,首先需要将微信升级到808及以上版本,然后打开微信app,
2当微信的置顶聊天窗口达到或超过9个时才会进行折叠,进入微信首页后即可看到置顶聊天底部的“折叠置顶聊天”,点击三条杠即可折叠置顶聊天内容了。
3总结:
第一步:首先需要将ios版本微信升级到808及以上版本,然后打开微信app,
第二步:进入微信首页后即可看到置顶聊天底部的“折叠置顶聊天”,点击三条杠即可折叠置顶聊天内容了。
备注:隐藏置顶聊天后,消息列表的最上方就会有折叠置顶聊天的显示,点击三条杠即可显示被隐藏的置顶聊天了。