SwiftUI 文本动画不透明度不起作用

2024-04-09

问题很简单:我到底如何才能获得Text正确设置动画?

struct ContentView: View {
    @State var foozle: String = ""

    var body: some View {
        VStack() {
            Spacer()

            Text(self.foozle)
                .frame(maxWidth: .infinity)
                .transition(.opacity)

            Button(action: {
                withAnimation(.easeInOut(duration: 2)) {
                    self.foozle = "uuuuuuuuu"
                }
            }) { Text("ugh") }

            Spacer()
        }.frame(width: 320, height: 240)
    }
}

问题:视图坚持做一些愚蠢的动画,其中文本被新文本替换,但被省略号截断,并且它慢慢地横向扩展,直到显示整个新文本。

自然,这是not不透明度的动画。这不是框架宽度问题,正如我通过绘制边框所验证的那样。

这是否只是 SwiftUI 中另一个我必须处理的愚蠢错误,并祈祷有人修复它?

编辑:好的,感谢@Mac3n,我得到了这个灵感,它工作正常,即使它有点难看:

Text(self.foozle)
    .frame(maxWidth: .infinity)
    .opacity(op)

Button(action: {
    withAnimation(.easeOut(duration: 0.3)) {
        self.op = 0

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
            self.foozle += "omo"

            withAnimation(.easeIn(duration: 0.3)) {
                self.op = 1
            }
        }
    }

}) {
    Text("ugh")
}

问题是 SwiftUI 将 Text 视图视为相同的视图。您可以在视图上使用 .id() 方法来设置它。在本例中,我只是将值设置为文本本身的哈希值,因此如果更改文本,整个视图将被替换。

struct ContentView: View {
    @State var foozle: String = ""

    var body: some View {
        VStack() {
            Spacer()

            Text(self.foozle)
                .id(self.foozle.hashValue)
                .frame(maxWidth: .infinity)
                .transition(.opacity)

            Button(action: {
                withAnimation(.easeInOut(duration: 2)) {
                    self.foozle = "uuuuuuuuu"
                }
            }) { Text("ugh") }

            Spacer()
        }.frame(width: 320, height: 240)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI 文本动画不透明度不起作用 的相关文章

  • 如何在 SwiftUI 中仅使用 ForEach 而不是列表来滑动删除

    我正在 SwiftUI 中使用 ForEach 制作自定义列表 我的目标是进行滑动删除手势 而不是将 ForEach 嵌入到列表中 到目前为止 这是我的代码 import SwiftUI struct ContentView View le
  • 一个好的8086模拟器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 mac 有没有 8086 模拟器 如果是 哪个是最好的 除非您需要真正的原始 8086 带有自定义操作系统 否则您应该尝试 DosBox
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • GeoFire Swift 3 - 保存和更新坐标

    我正在尝试使用 GeoFire 将坐标存储到 Firebase 数据库中 我不确定如何更新新坐标 因为它们每秒都会更改 更新 随着childByAutoId 它正在为每辆自行车生成一个新的唯一 ID 如何引用这个唯一的自行车 ID 例如 用
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 作为!与 Swift 中 Xcode 6.3 中的 as 运算符对比

    Xcode 6 3 使 Swift 发生了很大变化 我必须更换每个应用程序中的数十个位置as gt as 为什么 现在有什么规则 在 Swift 1 2 之前 as运算符可用于执行两种不同类型的转换 具体取决于要转换的表达式的类型及其要转换
  • 如何让按钮闪烁?

    我试图在扫描正确时将按钮的颜色 只是闪烁 闪烁 更改为绿色 在出现问题时将按钮的颜色更改为红色 我可以用这样的视图来做到这一点 func flashBG UIView animateWithDuration 0 7 animations s
  • SwiftUI:发送电子邮件

    在正常情况下UIViewController在 Swift 中 我使用此代码发送邮件 let mailComposeViewController configuredMailComposeViewController mailCompose
  • 将 UIToolBar 添加到所有键盘(swift)

    我正在尝试以尽可能少的重复次数将自定义 UIToolBar 添加到我的所有键盘中 我目前的做法要求我将代码添加到所有 viewDidLoads 中 并将每个文本字段的委托分配给我正在使用的 viewController 我尝试创建自己的 U
  • 如何使用 CNContacts 快速获取手机号码?

    我有一些代码可以检索用户联系人中的所有电话号码 但只想过滤掉手机号码 目前 我只是通过将第一个数字为 或第二个数字为 7 的数字添加到数组中来实现此目的 如下所示 func findContacts gt CNContact let key
  • 在 MAC OS X 10.9 上安装 NLTK 确实很困难

    我是 Python Mac OS 新手 我正在寻找 NLTK 教科书 但我在安装它时遇到了一些问题 我一直在寻找解决方案 但不幸的是 所有解决方案似乎都不适合我 或者我误解了如何使用它们 我遇到的基本问题是 尽管按照说明进行操作 NLTK
  • Swift:设置协议的可选属性

    如何设置协议的可选属性 例如 UITextInputTraits 有许多可选的读 写属性 当我尝试以下操作时 出现编译错误 无法分配给 textInputTraits 中的 keyboardType func initializeTextI
  • 如何在 iOS 13 中将 UISegmentedControl 的背景颜色设置为白色

    iOS 13 对 UISegmentedControl 进行了一些更改 包括切换所选片段时的非常漂亮的动画 但是我注意到它没有显示backgroundColor属性正确 它似乎总是有一点色彩 我见过回答如何设置的问题selectedSegm
  • 将类型传递给通用 Swift 扩展,或者理想情况下推断它

    说你有 class Fancy UIView 你想找到所有兄弟姐妹Fancy意见 没问题 https stackoverflow com q 37232743 294884 for v UIView in superview subview
  • Swift:长按手势识别器 - 检测轻击和长按

    我想连接一个动作 如果手势是点击 它会以特定的方式为对象设置动画 但如果按下持续时间超过 0 5 秒 它会执行其他操作 现在 我刚刚连接了动画 我不知道如何区分长按和点击 如何访问新闻持续时间以实现上述目的 IBAction func ta
  • 我的 UICollectionView 无法使用 Swift 平滑滚动

    我有一个CollectionView它使单元出队取决于message类型 例如 文本 图像 我遇到的问题是当我向上 向下滚动时滚动确实很不稳定 因此用户体验不是很好 这仅在第一次加载单元格时发生 之后滚动就会平滑 我有什么想法可以解决这个问
  • SwiftUI:隐藏键盘但显示光标

    我想使用自定义按钮将文本输入到TextField 但仍显示并移动光标 有没有办法隐藏默认键盘 同时仍然显示光标 我希望有这样的事情 TextField text text keyboardType none 这是它目前的样子 您可以使用UI
  • 关闭捕获上下文 Swift

    当我尝试更改闭包中的变量时出现此错误 A C function pointer cannot be formed from a closure that captures context 是否有解决方法或者仍然可以更改闭包内的变量 My C
  • 从 NSImage 获取像素和颜色

    我创建了一个 NSImage 对象 理想情况下想确定它包含多少个像素颜色 这可能吗 此代码呈现NSImage into a CGBitmapContext void updateImageData if image return Dimen
  • 在 Object 子类及其自己的子类上实现ignoreProperties()

    我是领域新手 我正在使用继承自 Object 的基类以及该基类的自定义子类创建模型 我的模型要求基类通过覆盖静态来声明一些属性被忽略ignoredProperties 方法 当尝试在某些基类子类上重写该方法时 我收到一个 Swift 编译器

随机推荐

  • 获取几何长度

    有谁知道获取 WPF 几何图形长度 以像素为单位 的有效方法 我知道 WPF 中的几何图形是基于矢量的 因此实际上没有像素长度 但必须能够根据可见的绘制图像获得长度 我的意思是 如果我在 1024x800 像素图像中绘制一些几何图形 则必须
  • 从表中选择随机单词

    假设我有以下基本 MySQL 数据 CREATE TABLE my words my word VARCHAR 255 INSERT INTO my words VALUES dog INSERT INTO my words VALUES
  • System.IO 找不到通过 subst-command 生成的路径

    context 系统有一个硬盘和一个驱动器 C 所需路径位于 F eventlogging 我做了什么 我执行了 subst cmd 以生成 F 驱动器 来自 C 添加了目录 eventlogging 问题 在代码中 有一些部分写入 F e
  • .NET 4.0 框架与 .NET 1.1 位于同一服务器上

    这些框架版本可以在同一台服务器上正常运行吗 这意味着 IIS 可以支持两个应用程序池 其中一个池配置为 NET 4 0 另一个池配置为 NET 1 1 编辑 这个问题与 IIS 7 有关 是的 您可以在同一个 IIS 实例中运行 1 1 2
  • 在 WKInterfaceLabel 内滚动长文本?

    简单的问题 有没有办法制作WKInterfaceLabel如果文本太长而无法适应标签框架 则滚动 类似于UITextView 你绝对可以做到这一点 您需要做的就是设置以下属性WKInterfaceLabel在故事板中 标签 gt 线 0 W
  • Fortran 读取混合字符串和数字数据

    我在读取语句时遇到问题 我更喜欢 Fortran90 尽管如果有帮助的话其他版本也是可能的 我的文件中有一堆数据行 可以描述为 以空格分隔 没有固定的格式 包含一个字符串 后跟 7 个数字 字符串包含正斜杠 这是一个例子 maxele OS
  • 如何防止(卸载)TypeScript 安装并引用它自己的 @types 到 AppData\Local 中

    我遇到了一个有点令人困惑的问题 似乎TypeScript正在安装自己的副本React进入它自己的全局缓存 不确定它叫什么 假设那就是它是什么 并在我的项目中引用它 具体来说 我最终得到了两个对 React 的引用 其中一个位于我的项目的根目
  • 在maven 2中的命令行上设置插件的属性

    在 maven 2 x 中 如何在命令行上而不是在 pom 或 settings xml 中该插件的 中设置插件的属性 例如 如果我正在使用mvn dependency copy dependencies 在这里看到 http maven
  • 循环系统发育树上的节点标签

    我正在尝试创建循环系统发育树 我有这部分代码 fit lt hclust dist Data 4 method complete members NULL nclus 3 color c red blue green color list
  • Asp.net core 中的条件依赖解析

    我有 2 个控制器 PayerController 和 BusinessController 两个 Controller 构造函数都将 EntityManager 作为参数 它是一个抽象类 我想根据我正在使用的控制器来解析每个管理器类 对于
  • 使用 javascript 将 png 上传到 imgur

    我正在尝试使用Javascript上传一个png to imgur http imgur com 我直接使用了 Imgur API 中的代码example http api imgur com examples 但我认为我没有正确传递 pn
  • Linux内核将写入管道的数据保存在哪里

    假设有以下简单代码 include
  • 包含任何文本的元素的量角器预期条件

    有没有办法检查元素中是否有任何文本 我已经找到了textToBePresentInElement但此函数会检查指定值 如果失败则不会返回正确的错误 我通过 API 填充该元素 并且稍后加载它 因此我希望浏览器等到元素中出现任何信息 然后检查
  • 如何通过 Xml 属性重命名类名?

    假设我有一个名为的 XML 可序列化类Song Serializable class Song public string Artist public string SongTitle 为了节省空间 也半混淆XML 文件 我决定重命名 xm
  • 导入pfx时无法导入以下密钥文件错误

    我在 stackoverflow 上彻底研究了这个问题 我看到了很多答案 但没有一个对我们有用 我们最近从 comodo 购买了一个代码签名证书 我们将使用它来签署我们的 c WPF net4 应用程序 我们已按照以下说明进行操作 然后在
  • 是否可以调试在 jni4net 中运行的 Java 程序?

    我目前正在使用 Java 库jni4net http jni4net com 在 IIS Express 上运行的 C 应用程序中 Java 库抛出异常 是否可以附加调试器来调试 Java 代码 Attempt 我尝试按照 提供的说明将以下
  • Ehcache避免将敏感数据存储到磁盘?

    我们希望使用 Ehcache 缓存不应该存储到磁盘的敏感数据 数据只能驻留在主内存中 这种数据存储在磁盘上是非法的 因此需要谨慎对待 我们已经在使用 Ehcache 无论是否带有陶土 来实现常见的缓存目的 我知道 Ehcache 提供了在主
  • Xcode 8 警告:“__textcoal_nt”部分已弃用

    我最近在 el cap 上更新到了 Xcode 8 今天早些时候我做了一个 xcode select install 还运行了brew来安装几个命令 我还更新了 Podfile 然后启动了 Xcode 8 直到现在我还没有为我正在处理的特定
  • 删除 Symfony2 表单中的表单命名空间(针对 REST API)

    我正在使用 Symfony2 设计 REST API 对于 POST 和 PUT 请求 我使用 FormType 就像是 class EmailType extends AbstractType public function buildF
  • SwiftUI 文本动画不透明度不起作用

    问题很简单 我到底如何才能获得Text正确设置动画 struct ContentView View State var foozle String var body some View VStack Spacer Text self foo