码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SwiftUI 和 Combine 的学习:一


    文章目录

    • 简介
        • 命令式和声明式编程
        • 声明式 UI
        • SwiftUI 和 Combine 简介
    • SwiftUI 基础
        • Modifier
        • 多尺寸的预览
    • 数据状态和绑定
        • 投影属性
        • propertyWrapper
        • 操作回溯和数据共享
        • ObservableObject
        • 使用 @Published 和自动生成
        • @EnvironmentObject
        • 总结
    • SwiftUI 进阶
        • 使用内置图标库 (SF Symbols)
        • 自定义 View Modifier
        • 渐变背景
        • 动画
            • 隐式动画
            • 显式动画
        • 包装 UIView 类型
    • Combine 和异步编程
        • 传统异步编程
        • 响应式异步编程模型
        • Combine 基础
        • Publisher
            • 事件发布
            • 有限事件流和无限事件流
        • Operator
        • Subscriber
        • 其他角色
            • Subject
        • Scheduler
            • 关于 where
            • 关于 when
    • Publisher 和常见的 Operator
        • 序列 Publisher 及其操作
        • reduce 和 scan
        • compactMap 和 flatMap
        • removeDuplicates
        • 错误处理
        • 转换错误类型
        • 抛出错误
        • 从错误中恢复
        • 嵌套的泛型类型和类型抹消
        • 操作符熔合
        • 其他的 Operator
        • 使用 merge 整合事件流
    • 响应式编程的边界
        • 时序
        • zip
        • combineLatest
        • 响应式和指令式的桥梁
        • Foundation 中的 Publisher
        • URLSession Publisher
        • Timer Publisher
        • Notification Publisher
        • @Published
        • 订阅和绑定
        • 通过 sink 订阅 Publisher 事件
        • 通过 assign 绑定 Publisher 值
        • Publisher 的引用共享
        • Cancellable, AnyCancellable 和内存管理

    简介

    命令式和声明式编程

    如果说指令式是教会计算机 “怎么做”, 那么声明式就是告诉计算机要 “做什么”。指令式编程是描述过程,期望程序执行以 得到我们想要的结果;而声明式编程则是描述结果,让计算机为我们考虑和组织出 具体过程,最后得到被描述的结果。
    现代语言中,一般使用函数式编程或者 DSL 的方式来实现声明式的编程方式。

    声明式 UI

    一般来说,View = f(State) 中的函数 f 是纯函数,也就是对于某个特定的输入 State, 所对应的 View 是确定的,不随其他变量而改变。我们可以单纯地通过控制和改变 State 来得到确定的 UI,这是使用声明式的方法来构建 UI 的基础。

    SwiftUI 和 Combine 简介

    SwiftUI 和 Combine 都是在 WWDC 2019 上 Apple 公布的开发框架,它们都是由纯 Swift 编写的。前者是一个声明式 UI 的用户界面开发框架,后者是基于响应式编程, 用于处理数据流的框架。

    SwiftUI 基础

    Modifier

    按照这个定义,大致来说,view modifier 分为两种类别:

    → 像是 font,foregroundColor 这样定义在具体类型 (比如例中的 Text) 上,然后 返回同样类型 (Text) 的原地 modifier。

    → 像是 padding,background 这样定义在 View extension 中,将原来的 View 进行包装并返回新的 View 的封装类 modifier。

    原地 modifier 一般来说对顺序不敏感,对布局也不关心,它们更像是针对对象 View 本身的属性的修改。而与之相反,封装类的 modifier 的顺序十分重要。

    多尺寸的预览

    数据状态和绑定

    在 SwiftU

  • 相关阅读:
    智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
    Python学习笔记第四十二天(NumPy 字符串函数)
    模糊PID之matlab模糊控制器配置
    移动元素(秋季每日一题 35)
    【社会网络分析第5期】gephi使用指南
    js--promise、async 和 await 相关知识总结
    LeetCode 53. 最大子数组和
    Python爬取代理IP
    808协议是指中国国标GB/T 32960-2017《道路车辆运行数据远程监管与服务》通信协议,也被称为JT/T808协议
    Linux 操作技巧
  • 原文地址:https://blog.csdn.net/xiangxiang07/article/details/126389434
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号