You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUIPager内元素触碰到屏幕边缘时消失的问题求助

分页组件中按钮边框滚动到屏幕边缘时消失的问题

我用SwiftUI实现了一个分页日历组件,核心代码如下:

Pager(page: vm.selectedWeekPage, data: vm.deltaWeeksArray, id: \.self) { deltaWeek in
    HStack{
        ForEach (vm.fetchWeek(vm.deltaWeek(delta: deltaWeek)), id: \.self){
            day in
            Button {
                vm.selectedDay = day
            } label: {
                    Text("\(vm.extractDate(date: day, format: \"dd\"))")
                        .font(.custom("Unbounded", size: 20))
                        .fontWeight(.bold)
                        .foregroundColor(Color(tm.getTheme().foregroundColor))
                        .frame(width: 42, height: 42)
                        .overlay(content: {
                            RoundedRectangle(cornerRadius: 15, style: .continuous)
                                .stroke(lineWidth: 2)
                                .foregroundColor(Color(tm.getTheme().foregroundColor))
                                .frame(width: 46, height: 46)
                                .fixedSize()
                        })
                    .frame(maxWidth: .infinity)
            }
        }
    }
    .padding(.horizontal, 18)
}
.singlePagination()
.pagingPriority(.simultaneous)
.onPageChanged({ page in
    if page >= vm.deltaWeeksArray.count - 2 {
        (1..<4).forEach { _ in
            vm.deltaWeeksArray.append((vm.deltaWeeksArray.last ?? 0) + 1)
            vm.deltaWeeksArray.removeFirst()
            vm.selectedWeekPage.index -= 1
        }
    } else if page <= 1 {
        (1..<4).forEach { _ in
            vm.deltaWeeksArray.insert((vm.deltaWeeksArray.last ?? 0) + 1, at: 0)
            vm.deltaWeeksArray.removeLast()
            vm.selectedWeekPage.index += 1
        }
    }
})
.itemSpacing(50)
.frame(maxHeight: 48)
.padding(.horizontal, -18)

问题表现:切换分页时,当按钮滚动到屏幕边缘位置,按钮上的RoundedRectangle描边会消失。

我已经尝试过两种方案,但都没能解决问题:

  • 用ZStack替代.overlay()来实现文本加边框的布局
  • 将Text视图从Button的标签内容中单独提取出来

求各位帮忙分析原因并给出解决方案。

内容的提问来源于stack exchange,提问作者leichner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:55:47