如何在 SwiftUI 中访问视图的修饰符?

Posted

技术标签:

【中文标题】如何在 SwiftUI 中访问视图的修饰符?【英文标题】:How can I access modifiers of a view in SwiftUI? 【发布时间】:2019-06-08 12:20:34 【问题描述】:

假设我有一个 View 和一个 Image 有一个 shadow 属性:

struct ContentView: View 
    var body: some View 
        let myImage = Image("turtlerock").shadow(radius: 10)

        return myImage
    

现在假设我想访问阴影半径的值。我以为我可以做到这一点:

print(myImage.shadow.radius)

但是,这会返回错误:

'(Color, Length, Length, Length) -> _ModifiedContent<_modifiedcontent _shadoweffect>' 类型的值(又名'(Color, CGFloat, CGFloat, CGFloat) -> _ModifiedContent<_modifiedcontent _shadoweffect>')没有成员'半径'

有没有办法访问修饰符?

【问题讨论】:

【参考方案1】:

myImage的返回类型为:

_ModifiedContent<Image, _ShadowEffect>

我们可以通过以下方式访问原始图像:

myImage.content

我们可以通过键入来访问阴影效果修饰符:

myImage.modifier

所以要做你想做的事,你必须输入:

print(myImage.modifier.radius)

【讨论】:

您能否展示更完整的代码,这些代码可以在 Xcode 或至少在 Swift Playground for iPad 上运行?

以上是关于如何在 SwiftUI 中访问视图的修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI NavigationView 切换色调颜色

如何将函数中的多个修饰符应用于 SwiftUI 中的给定视图?

如何使用适当的可访问性修饰符覆盖 SwiftUI Picker

如何在自定义视图中创建更改属性的修饰符

如何防止 SwiftUI clipShape 影响子视图

Stack内的SwiftUI TextField锁定无法访问