在SwiftUI中,请考虑以下导航栏:

ios - 使用偏移时剪切导航栏项目的可点击区域-LMLPHP

这是尾随.navigationBarItems的声明方式:

HStack(spacing: 0) {
    Button(action: {
        self.addListModal = true
    }, label: {
        NavBarImage(image: "plus")
    })
    // more buttons here

这是NavBarImage结构:
struct NavBarImage: View {
    var image: String

    var body: some View {
        ZStack {
            Rectangle().foregroundColor(Color.red).frame(width: 40, height: 45)
            Image(systemName: image)
        }
    }
}

那里有红色,所以我可以看到每个按钮的可轻击区域应该是什么。我将这个带有ZStack想法的Rectangle介绍给我,以使图像更易于拍打。

现在,我想将项目向右移动,使它们更符合下面的列表内容。我尝试将.offset添加到我的HStack中:
HStack(spacing: 0) {
    // buttons
}
.offset(x: 15, y: 0)

产生以下结果:

ios - 使用偏移时剪切导航栏项目的可点击区域-LMLPHP

所以这对我来说看起来很完美。但是,问题是最右边的导航按钮的可点击区域在右边被切除了。

我在此处以绿色说明了可轻击区域的切除情况:

ios - 使用偏移时剪切导航栏项目的可点击区域-LMLPHP

该按钮的绿色区域不再注册点击。

我尝试在.padding上使用负的尾随HStack,但这没有什么区别。有什么办法可以纠正此问题,也许是通过在内容 View 的UINavigationBar中使用一些init()声明来解决的?

编辑:

我只是尝试将.accessibility添加到Rectangle中,结果是相同的:
Rectangle().foregroundColor(Color.red)
    .accessibility(label: Text(image))
    .frame(width: 40, height: 45)

最佳答案

尝试改用

HStack(spacing: 0) {
    // buttons
}
.padding(.trailing, 15)

关于ios - 使用偏移时剪切导航栏项目的可点击区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58847764/

10-16 04:54