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
相关产品推荐
相关产品推荐

