首页 > 解决方案 > SwiftUI:如何将 .clipShape 应用于 .hoverEffect?

问题描述

我正在使用.hoverEffect修饰符。当用户将鼠标/触控板指针放在我的按钮上时,它会为我的按钮添加悬停效果:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Button("Hello world") {
            // Action…
        }
        .padding()
        .background(Color.blue)
        .foregroundColor(.white)
        .hoverEffect(.lift) // ← Hover effect
        .clipShape(Capsule())
    }
}

但是,当我将剪辑形状应用于按钮(例如RoundedRectangleCapsule)时,视图会被剪辑,但悬停效果不会。

具有悬停效果的按钮

如何获得与按钮形状相匹配的悬停效果?

标签: iosswiftuiipados

解决方案


用于.contentShape(Capsule())更改悬停效果的形状以匹配您的clipShape. 请注意,此修饰符也会影响命中测试区域,这在大多数类似于您自己的示例中可能是可取的。


推荐阅读