TabView 표시기 사용자 정의
딱한 사정
SwiftUI
TabView
및 PageTabViewStyle
를 사용하여 페이지의 UI를 가로로 교환한 후 전환할 수 있습니다.그러나 TabView의 PageTabViewStyle에는 기본 표시기가 표시되지만 거의 사용자 정의할 수 없습니다.
이번에는 지시기의 좌표를 변경해서 임의의 위치에 지시기를 표시하려고 합니다.
처리 방법
기본 표시기가 아닌 자체 표시기 UI를 사용합니다.
다음은 독립적으로 설치된 표시기 UI의 코드입니다.
struct TabIndexView: View {
let numberOfPages: Int
let currentIndex: Int
var dotSize = CGFloat(5)
var spacing = CGFloat(6)
var dotColor = Color.white
var borderColor = Color.white
var body: some View {
HStack(spacing: spacing) {
ForEach(0..<numberOfPages) { index in
if index == currentIndex {
Circle()
.fill(dotColor)
.frame(width: dotSize, height: dotSize)
} else {
Circle()
.stroke(borderColor, lineWidth: 0.5)
.frame(width: dotSize, height: dotSize)
}
}
}
}
}
아래 코드에 설치된 지시기를 사용합니다..tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
기본 표시기 UI를 숨깁니다.또한
.overlay
에서 임의의 충전을 제공하여 표시 표시기의 위치를 조정한다. @State private var currentTabViewIndex = Int(0)
var content: some View {
TabView(selection: $currentTabViewIndex) {
pageView
.tag(0)
pageView
.tag(1)
pageView
.tag(2)
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.overlay(
VStack {
Spacer()
TabIndexView(numberOfPages: 3, currentIndex: currentTabViewIndex)
.padding(.bottom, 44)
}
)
}
별도의 UI이므로 점 등의 모양새를 자유롭게 변경할 수 있습니다.마지막 참고 기사처럼 애니메이션을 넣으면 멋있을지도 몰라요.
참고 자료
Custom Paging UI in SwiftUI | Better Programming
Reference
이 문제에 관하여(TabView 표시기 사용자 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ariiyu/articles/6ae8f744ab19cb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)