您的位置:首页 > 移动开发 > IOS开发

iOS开发 - 第05篇 - 项目 - 10 - 发微博

2016-08-17 08:44 302 查看

1、点击表情

1.1 表情放大界面



1.2 实现思路

1>监听表情按钮点击

2>同一时间只能显示一个放大镜,创建一个即可,不用重复创建

3>放大镜应该作为一个整体HWEmotionPopView,而且比较简单,用XIB来实现即可,提供类方法

4>在HWEmotionPageView中懒加载HWEmotionPopView

注1:HWEmotionPopView添加位置问题,若添加在HWEmotionPageView上面,则会被上面工具台挡住,因此,应该添加到最上面的窗口UIWindow,而且不是keyWindow,因为弹出的键盘也是一个UIWindow,覆盖在keyWindow之上,keyWindow是后面的主控制器!!!

注2:由于添加到UIWindow上,坐标系发生变化,要注意坐标系转换



5>设置HWEmotionPopView里面的按钮表情,需要在点击按钮的时候,拿出按钮对应的Emotion模型,设置给HWEmotionPopView

方法一:给每一个表情按钮绑定tag,根据tag取出self.emotions数组中的Emotion模型;

方法二:

1. 一个按钮对应一个表情模型,应该自定义按钮,给每个按钮一个表情模型,以后可以直接根据按钮取出表情模型,且重写按钮中表情模型的setter方法,将png还是code设置按钮显示封装到里面

2. 设置HWEmotionPopView里面的按钮表情也只需要传给其一个表情模型即可,XIB里面的按钮对应自定义表情按钮





HWEmotionPageView表情按钮点击



2、插入表情

2.1 小处理

1>点击表情取消高亮

方法一:重写按钮的setHighlighted:方法

方法二:self.adjustsImageWhenHighlighted= NO;按钮高亮的时候,不要去调整图片(不要调整图片会灰色)

2>popView消失

GCD延时后移除

2.2 插入表情思路

实现:点击表情按钮往控制器中的textView插入表情

方法一:使用代理,但是层级结构太深,要拿到textView只能通过控制器,需要不断使用代理传递出去:

HWEmotionPageView——HWEmotionListView——HWEmotionKeyboard——HWComposeViewController——HWEmotionTextView

方法二:使用通知,由系统管理,表情按钮点击发送通知即可,控制器接收通知





关键:使用NSAttributedString进行图文混排!!!

注1:图文混排最好放在textView中处理,不要直接在控制器中处理

注2:不应该直接将处理表情文字的操作放到WBTextView中,否则直接会和HWEmotion关联,导致WBTextView只能用在当前项目中,应该再自定义一个textView,继承自WBTextView,专门用来处理表情文字



3、封装TextView

1>写一个UITextView的分类,封装insertAttributeText:方法,可以插入带属性文字

注:但是关于字体的设置不应该封装到里面





2>重写setAttributeText方法,保证输入表情,删除占位符



3>添加删除按钮

注意:在initWithFrame:方法中添加按钮,布局时第一个按钮是删除按钮,不是表情按钮,注意subViews

4、BUG修复

4.1 删除操作



4.2 键盘上面工具条位置



问题:当使用中文键盘后,键盘高度会变高(提示中文),再次点击表情键盘时,工具条位置不会改变

原因:设置了switchingKeybaord

解决办法:让工具条对新弹出的键盘做出反应!!!



即:在旧键盘退出的时候,不要改变frame,再新键盘弹出的时候再根据新键盘做出反应

4.3 表情文字变小

在插入表情图片的时候,表情图片会变小,文字也会变小

原因:在插入表情的时候,设置字体,在插入表情之后操作



若放在插入属性文字里面操作就不会出现变小的情况,即先设置好字体,再给self.attributedText赋值就行



即:一旦self.attributedText= attributedText;后再取出来在外面设置字体就不好使!

关键原因:self.attributedText的属性为copy属性,为拷贝属性,外面文本改了不会影响到里面的文本

但是将设置字体的方法放到里面又不太合适,因为该方法只是用来插入属性文字,不需要管字体

解决办法:使用block,将设置字体的代码放到block里面!!!





5、发带表情微博

方法:将所有图片表情转为文字描述,发给新浪

1>HWEmotionTextView中提供一个方法,将textView中所有图片文字,转为NSString



关键:遍历attributedText,找出所有的图片表情,将其转化为文字描述!!!

注:现在的attch只能拿到设置的UIImage,为了从attch中拿到当初设置emotion中的表情文字描述,即要实现拿到attach就能拿到对应的emotion,可以自定义HWEmotionAttachment,增加一个emotion属性!!!

2>自定义HWEmotionAttachment





6、长按表情

实现:长按表情会弹出对应的表情popView,再拖动时候显示相应表情popView

方法:给pageView增加长按手势

注1:将显示PopView的代码封装到WBEmotionPopView中,传给一个表情按钮

注2:原先WBEmotionPopView中设置表情模型的方法就可以去掉,直接设置表情按钮即可

1>HWEmotionPopView



2>HWEmotionPageView







7、表情键盘最近标签页

注1:要将最近使用的表情存放进沙盒

注2:在表情按钮点击或者长按松开的时候存入沙盒

注3:提供一个WBEmotionTool管理表情存储,取出





注:MJCodingImplementation宏可以替代下面两个方法

HWEmotionPageView中存储



HWEmotionKeyboard中读取

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐