WWDC 23 Swift Student Challenge
有幸在高中就参与过 WWDC 20 的 SSC,可惜当时课余时间并不充裕导致作品的质量并不理想,
如今,再战 WWDC 23 SSC 😋
有幸在高中就参与过 WWDC 20 的 SSC,可惜当时课余时间并不充裕导致作品的质量并不理想,
如今,再战 WWDC 23 SSC 😋
最近在学习和使用 WWDC 22 上全新的 Swift Charts,
Swift Charts 使用 SwiftUI 的声明式语法,用于在 SwiftUI 中构建可视化图表,便于数据的可视化分析。
本期博客将专注于 Swift Charts 的标记和符号。
买了 Apple Magic Keyboard 已经一周多了,体验了苹果的「线上买,线下提」,
经过一番折腾,又体验了「14天无理由退货」,
来分享下我的使用感受和折腾过程。
众所周知,高校体育就是一坨…
且不说功能如何,
你一个给大学生用的“运动”软件,
开屏一大堆广告,手机动一下就乱跳app,
跑个步还不忘给我打广告,从头打到尾,真牛…
傻*软件,吃像太难看!
跑个步还要打卡点位,真的恶心,但是,跑步是肯定不会跑的啦~
在 SwiftUI 中,没有提供默认的 modifier 来监听 TextView
的 selectionRange
,
这对于文本编辑类 app 来说是很致命的,因为无法控制光标的位置,
但是可以从其他的文章中找到一些思路:
寻找 NSView / UIView 的方法来源于:siteline/SwiftUI-Introspect
本文来介绍一种解决方案,可以实现出以下的代码:
1 | import SwiftUI |
熟悉我的朋友应该知道,我一直在开发一个框架,
用于在 SwiftUI 中以原生的方式来渲染 Markdown 文本。
P.S. 这篇文章也是在我做的编辑器中完成的。
早晨发布了 MarkdownView 的 1.0.0-rc
,也就是正式版的候选版本,
写这篇文章主要是想回顾和总结一路过来的技术点和一些解决方案。
起因还是偶然在 B 站刷到这么一个视频:
哟,原来是个流氓软件啊,草!!!!!!
继续接上篇,做完 AnyMyCollection
之后,
我又添加了一个扩展来修改 CustomCollection
在特定类型下的行为:
1 | extension CustomCollection where Element == Int { |
当 Element
是 Int
时,不管三七二十一,直接返回 [4, 5, 6]
但是,运行是发现了这样的现象:
1 | let collection = CustomCollection(1, 2, 3) |
上篇博客中,我们初步了解了为什么需要一个 Type Eraser ,
也分享了一个简单实现 Type Erasure 的方案。
为了更加深入了解类型擦除,我们还是得来看看 Swift 自带的一些 Type Eraser 是如何实现的。
目标是:理解一下其基本思路,并且仿制一个出来。
探索类型擦除的原理和实现,常见的类型橡皮擦有:AnyView、AnyShape、AnyCollection…