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

1、点击表情


1.1 表情放大界面




1.2 实现思路


1>监听表情按钮点击

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

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

4>在HWEmotionPageView中懒加载HWEmotionPopView

1HWEmotionPopView添加位置问题,若添加在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中读取




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值