我遇到的問題是我的訊息在另一側沒有拐角半徑。這是它的外觀:

還有它的代碼:
HStack {
HStack {
Text(text)
.fixedSize(horizontal: false, vertical: true)
.foregroundColor(isSender ? Color.white : Color(.label))
.padding()
}
.background(isSender ? Color.blue : Color(.systemGray5))
.padding(isSender ? .leading : .trailing,
isSender ? UIScreen.main.bounds.width*0.28 : UIScreen.main.bounds.width*0.2)
}
.cornerRadius(10)
我如何使它在另一邊也變圓?
uj5u.com熱心網友回復:
實際上你正在做的是在背景之后應用填充,這樣你的填充將應用于你的背景視圖,現在你的背景視圖不再在角落,這就是為什么在特定一側沒有圓角,你可以在之前放置填充背景來實作你正在尋找的東西:
HStack {
HStack {
Text(text)
.fixedSize(horizontal: false, vertical: true)
.foregroundColor(isSender ? Color.white : Color(.label))
.padding()
}
.padding(isSender ? .leading : .trailing,
isSender ? UIScreen.main.bounds.width*0.28 : UIScreen.main.bounds.width*0.2) //HERE
.background(isSender ? Color.blue : Color(.systemGray5))
}
.cornerRadius(10)

您也可以為現有代碼實作圓角,但只需將cornerRadius 從 HStack 轉移到您的背景視圖,如下所示:
HStack {
HStack {
Text("text")
.fixedSize(horizontal: false, vertical: true)
.foregroundColor(isSender ? Color.white : Color(.label))
.padding()
}
.background(isSender ? Color.blue : Color(.systemGray5))
.cornerRadius(10) //HERE
.padding(isSender ? .leading : .trailing,
isSender ? UIScreen.main.bounds.width*0.28 : UIScreen.main.bounds.width*0.2)
}

uj5u.com熱心網友回復:
修飾符的順序很重要。
您首先應用填充,然后是cornerRadius。這給(不可見的)填充一個圓角。如果你反過來做——首先是cornerRadius,然后是填充——它可以作業:
HStack {
Text(text)
.fixedSize(horizontal: false, vertical: true)
.foregroundColor(isSender ? Color.white : Color(.label))
.padding()
}
.background(isSender ? Color.blue : Color(.systemGray5))
.cornerRadius(10) // << first radius, then padding
.padding(isSender ? .leading : .trailing,
isSender ? UIScreen.main.bounds.width*0.28 : UIScreen.main.bounds.width*0.2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473510.html
