
Как видите, действие смахивания начинается с края экрана, и я хочу, чтобы оно начиналось внутри элемента. Вот пример того, как я хочу, чтобы это началось:

Как мы видим здесь, поведение находится только ВНУТРИ списка, а мое — вне элемента.
Вот код, который я использую:
List {
ForEach(accounts) { account in
accountRow(account: account)
.containerShape(RoundedRectangle(cornerRadius: 10))
.swipeActions {
Button(role: .destructive) {
accountToDelete = account
showingDeleteAlert = true
} label: {
Label("Delete", systemImage: "trash")
}
}
}
...
@ViewBuilder
private func accountRow(account: Account) -> some View {
HStack {
Spacer()
VStack {
HStack {
Circle()
.fill(Color.blue)
.frame(width: 40, height: 40)
.overlay(
Image(systemName: account.iconName)
.resizable()
.scaledToFit()
.foregroundColor(.white)
.padding(10)
)
VStack(alignment: .leading) {
Text(account.title)
.font(.headline)
Text(balancesHidden ? "***" : abbreviatedAmount(amount: account.balance))
.font(.subheadline)
.foregroundColor(.gray)
}
.padding(.leading, 10)
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding()
.background(Color.dynamic)
.cornerRadius(10)
.shadow(color: Color.black.opacity(0.1), radius: 5, x: 0, y: 2)
}
.frame(maxWidth: UIScreen.main.bounds.width * 0.9) // Adjust the width as needed
Spacer()
}
.listRowSeparator(.hidden)
.padding(.vertical, 5) // Optional: Adjust vertical padding between rows
/* .onTapGesture {
if !(balancesHidden) {
selectedAccountForDetail = account
}
} */
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ow-element
Мобильная версия