用 SwiftUI ViewModifier 自定义弹窗

Posted 颐和园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 SwiftUI ViewModifier 自定义弹窗相关的知识,希望对你有一定的参考价值。

SwiftUI 以 ViewModifier方式提供了方式多样的呈现视图方式(弹窗),比如 contextMenu、alert、actionSheet。

相比较 UIKit 的弹窗,这些 ViewModifier 无疑能大大简化我们代码。但无一例外,这些 ViewModifier 只提供了很少的定制化选项。比如 Alert,你不能改变 Title 的样式、字体、颜色,也不能在上面放一个 TextField 或者 Image,甚至自定义呈现动画。

既然系统提供的 ViewModifier 不能满足需要,那么我们能不能定制化自己的 ViewModifier 呢?答案是肯定的。接下来本文将带你实现这样一个弹窗效果:

video link: https://gitee.com/kmyhy/PresentDeom/raw/master/1.mov

如果视频不能播放,请到此处下载:https://gitee.com/kmyhy/PresentDeom/raw/master/1.mov

你也许觉得这用 Alert 也可以做到。但事实是你不能。你仔细看就知道图中的弹窗并不是真正的 SwiftUI Alert 或者 UIKit AlertController。它是一个自定义的 View。Title 是红色的,Title 上面还有一个小图标(Image),它的呈现动画也是自定义的,一个 alpha 动画+缩放动画,你实际上可以实现任意的 UI 和动画效果。

接下来让我们一步一步实现它。

创建 ContentView

首先创建项目,选择 SwiftUI。打开 ContentView,编写:

以上是关于用 SwiftUI ViewModifier 自定义弹窗的主要内容,如果未能解决你的问题,请参考以下文章

用 SwiftUI ViewModifier 自定义弹窗

SwiftUI:内容是图像的 ViewModifier

SwiftUI:自定义视图修饰符不符合 ViewModifier?

Swiftui Scrollview Viewmodifier 适用于所有 Scrollview

如何制作一个接受任何对象的 swiftui viewmodifier?

SwiftUI ViewModifier - 添加字距调整