zoukankan      html  css  js  c++  java
  • 用 SwiftUI 5天组装一个微信

    GitHub 链接:SwiftUI-WeChatDemo

    第一章:剖析:如何用 SwiftUI 5天组装一个微信 —— 聊天界面篇

    第二章:剖析:如何用 SwiftUI 5天组装一个微信 —— 通讯录发现我篇

    效果图

    实装内容

    • 4 个 Tab 页面 + 聊天界面,使用纯 SwiftUI 搭建而成
    • 应用启动界面 Launch Screen
    • 国际化及应用内语言切换功能
    • Combine 使用场景(聊天界面简易对话功能)
    • 极度简化的 MVVM 架构
    • 逻辑部分纯 Swift5 书写,几乎不涉及 OC 类及 UIKit 库
    • 不使用第三方框架(除了 SwiftGen 提供便利)

    难点

    • 在聊天界面中隐藏 Tabbar(未能实现)
    • 聊天界面中信息滚动功能,尤其动画滑动效果难以实现
    • 保持键盘焦点,不自动隐藏(有望在 SwiftUI 3 后实现)
    • 发现页图标的动态颜色指定(实现起来障碍较大,多番尝试发现无法简单地将 Color 和 一众渐变色类型 存储到单一变量,并且 View 比较难以扩展,语法糖副作用严重)
    • SwiftUI 原生视图难以完美复刻微信原生界面(尤其是联系人页),判断是微信使用了大量自定义视图
    • Tab 按钮添加红点(无法实现,SwiftUI 原生视图仅接受 Image 和 Text,对 Modifier 的修改直接忽略)
    • SwiftUI 中 Combine 的使用(通过 ObservableObject 构造 ViewModel 实现)
    • 应用内语言切换(通过 自定义配置 SwiftGen 实现)

    • SwiftUI2 中缺乏视图焦点控制方法(该部分将在 SwiftUI3 中提供)
    • SwiftUI 中使用 switch 语法时,会导致自动提示失效,但编译能顺利通过,判断是 Xcode 问题
    • 目前在书写 SwiftUI 时遇到语法使用错误等情况,偶尔会出现 Xcode 提示未知错误,建议报告 bug(因为逐行书写,基本都能猜出问题所在)

    彩蛋

    应用内包含微信联系方式,欢迎同行交流(本人是 Android 攻城狮..)

  • 相关阅读:
    获取声音设备名称及PNPDeviceID
    定时音乐播放
    获取多媒体详细信息列表
    产品滚动展示
    制作电影特效效果
    十字光标定位
    获取指定点的RGB值
    绘画小游戏
    倒影效果文字
    浮雕效果显示图像
  • 原文地址:https://www.cnblogs.com/wavky/p/SwiftUI-WeChatDemo.html
Copyright © 2011-2022 走看看