【问题标题】:How to remove opacity animation in SwiftUI NavigationLink如何在 SwiftUI NavigationLink 中删除不透明动画
【发布时间】:2020-06-10 17:30:10
【问题描述】:

点击 NavigationLink 时,它会略微降低不透明度。有没有办法禁用它。我尝试使用.buttonStyle(PlainButtonStyle()),但这并没有达到预期的效果。

它嵌入在一个滚动视图中(为了可定制性优先于列表):

ScrollView {
    ForEach(items){ item in
        NavigationLink(destination: DetailView()){
            HStack{
                Text("title")
                Spacer()
                Image(systemName: "chevron.right")
            }
            .padding()
            .background(
                RoundedRectangle(cornerRadius: 10, style: continuous)
                    .foregroundColor(Color.gray)
            )
        }
    }
}

【问题讨论】:

  • 它是列表、表单还是独立的?你会展示更多上下文、可测试的演示吗?
  • 您认为按钮不透明?
  • @Asperi 更新了问题。它在 ScrollView 中
  • @davidev 不完全是。只是点击导航链接时出现的不透明动画。

标签: swiftui navigationview navigationlink


【解决方案1】:

这是可能的解决方案。使用 Xcode 11.4 / iOS 13.4 测试

使用只返回标签视图的自定义按钮样式(无高亮效果)

struct FlatLinkStyle: ButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
        configuration.label
    }
}

和

    NavigationLink(destination: DetailView()){
        HStack{
            Text("title")
            Spacer()
            Image(systemName: "chevron.right")
        }
        .padding()
    }.buttonStyle(FlatLinkStyle())     // << here !!

【讨论】:

  • 完美!完全符合我的要求。
  • 也适用于 Xcode 12 和 iOS 14.2。谢谢
猜你喜欢
  • 2018-10-31
  • 2015-12-21
  • 2016-12-16
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多