【问题标题】:SwiftUI: How to know correct order of modifiers?SwiftUI:如何知道修饰符的正确顺序?
【发布时间】:2021-06-24 08:09:49
【问题描述】:

我对 SwiftUI 很陌生,第一次学习它,不明白为什么下面的 sn-p 不起作用。理想情况下,VStack 应向所有方向拉伸,Image 应具有 200 像素的宽度,而不会丢失其纵横比。

代码

struct ContentView: View {
    var body: some View {
        VStack() {
            Image("Image Name")
                .resizable()
                .frame(width: 200)
                .aspectRatio(contentMode: .fit)
        }
        .background(Color.red)
        .frame(maxWidth: .infinity,maxHeight: .infinity)
    }
}

在我不小心对修饰符重新排序后,它起作用了。那么,在没有每次命中和试炼的情况下,我应该如何知道修饰符的正确顺序呢?

// new VStack modifier order 
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.red)

// new Image modifier order
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 200)

【问题讨论】:

  • 你对录音修饰符的意思 你能说明你是怎么录音的吗?

标签: ios swift xcode swiftui vstack


【解决方案1】:

目前考虑它的最佳方式是想象 SwiftUI 在每个修饰符之后呈现您的视图。因此,只要您说 .background(Color.red),它就会将背景染成红色,而不管您给它的框架是什么。如果您稍后展开框架,它不会神奇地重绘背景——这已经应用了。

当然,这实际上并不是 SwiftUI 的工作方式,因为如果这样做,那将是一场性能噩梦,但它是您在学习时使用的一种简洁的思维捷径。

更多详情请参考此链接https://www.hackingwithswift.com/books/ios-swiftui/why-modifier-order-matters#:~:text=Every%20time%20we%20modify%20a,up%3A%20ModifiedContent%3CModifiedContent%3C%E2%80%A6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2021-06-12
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2022-01-20
    • 2022-07-27
    相关资源
    最近更新 更多