iOS 8:类似QQ聊天主界面的制作

聊天图片框

  • 给定一个缩小版的图片,如何变成包含任意大小文字的图片框?
  • 首先将此图片设置为UIButton的背景图片。
  • 之后需要对图片进行加工:resizableImageWithCapInsets,可对图片进行拐角不变形拉伸处理。
  • 也可以通过图片的属性面板设置:slicing Horizontal and Vertical
  • 因为文字是包含在UIButton中的,而UIButton的背景图片并没有囊括所有的文字,故需要缩小文字在UIButton的显示空间。
  • 设置UIButton的属性 contentEdgeInsets,在属性面板中也有设置。

键盘处理

  • 当键盘弹出的时候,聊天界面的处理,需要随着键盘的弹出/消失,而自动平滑的上移/下移。

    • 通知中心对象 NSNotificationCenter defaultCenter,可以跨对象跨控制器之间传递数据。
    • 注册通知,一个对象想要获取另一个对象的变化,需要注册。
    • 发送通知 NSNotification,一个对象发生变化了,需要发送通知给系统,系统再通知注册通知的对象。
    • UIDevice通知 获取设备先关的信息,比如键盘弹出通知,包含有键盘的详细信息,比如键盘高度,键盘动画时间。
  • 键盘弹出,聊天界面的处理

    • 当获取到键盘弹出之后,需要将其聊天界面上调。
    • 1.修改底部工具条距离superView的距离,将其更改为键盘长度,可进行拖线进行变量更改。
    • 2.将整个控制器的view往上挪,将其y值更改为负数。
    • 3.使用transform
      • CGAffineTransformMakeTanslation(100,100),是将对象进行平移。
      • CGAffineTransform,可以进行形变属性的叠加
      • animateWithDuration,增加动画
      • CGffineTransformIdentity, 全部清空形变属性

增加头部/尾部

  • 是整张表格的头部/尾部,不是section的头部/尾部。
  • 头部一般用于焦点图片的展示,尾部可用于广告,也可以是:退出登录。
  • 将尾部设置为: 加载更多数据 —— 数据正在加载中
    • 1.使用通知的方式,在两个对象之间传递数据。
    • 2.使用代理设计模式,当监听一个对象发生的行为时,可以使用代理模式。
    • 3.KVO的方式 key value observing,监听属性值的改变,NSObject对象的方法:observeValueForKeyPath

tips

  • 使用代理设计模式的时候,有些方法是@optional是可选的,这个时候要判断代理对象是否实现了此种方法,可以使用方法:respondToSelector:@selector()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,456评论 4 61
  • 在杭州的时候,我定要走走那些繁杂的路。 15年夏天,骑自行车从滨江穿过虎跑路到城西时,我还是一个反扣着棒球帽的假小...
    咪咕噜摩西阅读 401评论 4 5
  • 在没有找男朋友之前,我说,我要找一个情商高的人,因为和情商高的人谈恋爱幸福。 直到遇到你,我的良先生。 我在自己最...
    星唏阅读 451评论 0 2

友情链接更多精彩内容