為什么 SwiftUI 會以不同的方式呈現這兩個按鈕?
一次嘗試一個(機身中只有一個按鈕)會為一個按鈕提供全屏黃色,另一個為正常大小的按鈕。
測驗 1
Button("Smh...") {}
.background(.yellow)
.frame(maxWidth: .infinity, maxHeight: .infinity)
測驗 2
Button("Smh...") {}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(.yellow)
如果鏈接的方法都修改了布局,我可以猜到為什么順序可能很重要,但顏色如何導致這種情況并不明顯。
uj5u.com熱心網友回復:
原因在這篇文章中有很好的解釋。每當應用修改器時,都會創建一個新視圖。在你的情況下:
測驗1:
- 您創建一個大小由標簽指定的按鈕
- 使用黃色背景創建一個新視圖
- 創建了一個具有最大寬度和最大高度的新視圖,但不會再次應用黃色背景,因此您會看到一個“正常”大小的按鈕。
測驗 2:
- 您創建一個大小由標簽指定的按鈕
- 創建一個具有最大寬度和高度的新視圖
- 然后應用背景顏色,因此新創建的全屏視圖具有黃色背景
為了更好地理解我的意思,在空曠的操場上試試這個:
import Foundation
import SwiftUI
import PlaygroundSupport
struct ContentView: View {
var body: some View {
HStack {
Button("Smh...") {}
.frame(width: 100, height: 100)
.background(.yellow)
Button("Smh...") {}
.background(.yellow)
.frame(width: 100, height: 100)
.border(.green)
}
}
}
PlaygroundPage.current.setLiveView(ContentView())
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/471001.html