Swift 小仿微博列表

这篇博客介绍了使用Swift实现的一个仿微博列表的Demo,主要内容包括:UITextView富文本显示,图片转场和浏览动画,以及界面流畅度优化。在富文本实现中,涉及正则匹配和字符串处理。图片转场参照微信效果,实现了捏合缩放、双击放大和拖拽过渡。界面优化策略包括异步计算、缓存和图片处理等。
摘要由CSDN通过智能技术生成

前言

    鉴于目前Swift的ABI(应用程序二进制接口)、API(应用程序编程接口) 基本稳定,对于Swift的学习有必要提上日程了,这个Swift仿微博列表的效果是我最近一边学习《Swift入门到精通-李明杰》 一边练手的Demo,Swift新手还请关照~🤝
    这个示例的主要内容有三个方面:
    一、UITextView富文本的实现
    二、图片转场和浏览动画
    三、界面流畅度优化

富文本点击效果
图集浏览效果

一、UITextView富文本的实现

  • 标题的富文本显示样式我是参考微博的:@用户昵称、#话题#、图标+描述、[表情]、全文:限制显示字数,点击链接跳转或查看图片

比如第一条数据的标题原始字符串为@wsl2ls: 不要迷恋哥,哥只是一个传说 https://github.com/wsl2ls, 是终将要成为#海贼王#的男人!// @蜜桃君🏀: 🦆你真的太帅了[爱你] https://github.com/wsl2ls // @且行且珍惜_iOS: 发起了话题#我是一只帅哥#不信点我看看 https://www.jianshu.com/u/e15d1f644bea , 相信我,不会让你失望滴O(∩_∩)O哈!
——> 正则匹配后富文本显示为@wsl2ls: 不要迷恋哥,哥只是一个传说 查看图片, 是终将要成为#海贼王#的男人!// @蜜桃君🏀: 🦆你真的太帅了 查看图片 // @且行且珍惜_iOS: 发起了话题#我是一只帅哥#不信点我看看 查看图片 , 相信我,不会让你失望滴O(∩_∩)O哈!

//正则匹配规则
let KRegularMatcheHttpUrl = "((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)" // 图标+描述 替换HTTP链接
let KRegularMatcheTopic = "#[^#]+#"    // 话题匹配 #话题#
let KRegularMatcheUser = "@[\\u4e00-\\u9fa5a-zA-Z0-9_-]*"  // @用户匹配
let KRegularMatcheEmotion = "\\[[^ \\[\\]]+?\\]"   //表情匹配 [爱心]
  • 富文本是由原始字符串经过一系列的正则匹配到目标字符串后,再经过一系列的字符串高亮、删除、替换等处理得到的

注意:每一个匹配项完成字符串处理后可能会改变原有字符串的NSRange,进而导致另一个匹配项的Range在处理字符串时出现越界的崩溃问题!

    //标题正则匹配结果
    func matchesResultOfTitle(title: String, expan: Bool) -> (attributedString :
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值