remove unused and move code to new files (#17)
* remove unused and move code to new files * move navBar modifier
This commit is contained in:
parent
9ee8bcbf75
commit
c3b73643dc
|
@ -32,7 +32,7 @@ struct InstagramNavBarItem: View, PagerTabViewDelegate {
|
|||
.background(Color.white)
|
||||
}
|
||||
|
||||
func setSelectedState(state: PagerTabViewState) {
|
||||
func setState(state: PagerTabViewState) {
|
||||
switch state {
|
||||
case .selected:
|
||||
self.theme.imageColor = .black
|
||||
|
|
|
@ -27,7 +27,7 @@ struct TwitterNavBarItem: View, PagerTabViewDelegate {
|
|||
.background(Color.white)
|
||||
}
|
||||
|
||||
func setSelectedState(state: PagerTabViewState) {
|
||||
func setState(state: PagerTabViewState) {
|
||||
switch state {
|
||||
case .selected:
|
||||
self.theme.textColor = .blue
|
||||
|
|
|
@ -41,7 +41,7 @@ struct YoutubeNavBarItem: View, PagerTabViewDelegate {
|
|||
.background(theme.backgroundColor)
|
||||
}
|
||||
|
||||
func setSelectedState(state: PagerTabViewState) {
|
||||
func setState(state: PagerTabViewState) {
|
||||
switch state {
|
||||
case .selected:
|
||||
self.theme.textColor = selectedColor
|
||||
|
|
|
@ -12,6 +12,12 @@
|
|||
28F828881C494B2C00330CF4 /* PagerTabStrip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28F8287D1C494B2C00330CF4 /* PagerTabStrip.framework */; };
|
||||
28F8289A1C494B4200330CF4 /* iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28F828991C494B4200330CF4 /* iOS.swift */; };
|
||||
C7A02C01269377D400BFE31B /* DataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7A02C00269377D400BFE31B /* DataStore.swift */; };
|
||||
E07FB07A26AF36B400CDCFD8 /* PagerSetAppearModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FB07926AF36B400CDCFD8 /* PagerSetAppearModifier.swift */; };
|
||||
E07FB07C26AF373600CDCFD8 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FB07B26AF373600CDCFD8 /* Extensions.swift */; };
|
||||
E07FB07E26AF377D00CDCFD8 /* PagerTabItemModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FB07D26AF377D00CDCFD8 /* PagerTabItemModifier.swift */; };
|
||||
E07FB08026AF39C300CDCFD8 /* NavBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FB07F26AF39C300CDCFD8 /* NavBarItem.swift */; };
|
||||
E07FB08226AF3B7200CDCFD8 /* PagerTabViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FB08126AF3B7200CDCFD8 /* PagerTabViewDelegate.swift */; };
|
||||
E07FB08526AF3CAA00CDCFD8 /* NavBarModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FB08426AF3CAA00CDCFD8 /* NavBarModifier.swift */; };
|
||||
E1FA589924C8BC1B0081FBE7 /* XLPagerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FA589824C8BC1B0081FBE7 /* XLPagerView.swift */; };
|
||||
E1FA589A24C8BC1B0081FBE7 /* XLPagerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FA589824C8BC1B0081FBE7 /* XLPagerView.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
@ -35,6 +41,12 @@
|
|||
28F8288E1C494B2C00330CF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
28F828991C494B4200330CF4 /* iOS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iOS.swift; sourceTree = "<group>"; };
|
||||
C7A02C00269377D400BFE31B /* DataStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataStore.swift; sourceTree = "<group>"; };
|
||||
E07FB07926AF36B400CDCFD8 /* PagerSetAppearModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PagerSetAppearModifier.swift; sourceTree = "<group>"; };
|
||||
E07FB07B26AF373600CDCFD8 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
|
||||
E07FB07D26AF377D00CDCFD8 /* PagerTabItemModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PagerTabItemModifier.swift; sourceTree = "<group>"; };
|
||||
E07FB07F26AF39C300CDCFD8 /* NavBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavBarItem.swift; sourceTree = "<group>"; };
|
||||
E07FB08126AF3B7200CDCFD8 /* PagerTabViewDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PagerTabViewDelegate.swift; sourceTree = "<group>"; };
|
||||
E07FB08426AF3CAA00CDCFD8 /* NavBarModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavBarModifier.swift; sourceTree = "<group>"; };
|
||||
E1FA589824C8BC1B0081FBE7 /* XLPagerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XLPagerView.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
|
@ -88,13 +100,27 @@
|
|||
28F828971C494B4200330CF4 /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E07FB08326AF3C6000CDCFD8 /* Modifiers */,
|
||||
28F828991C494B4200330CF4 /* iOS.swift */,
|
||||
E1FA589824C8BC1B0081FBE7 /* XLPagerView.swift */,
|
||||
C7A02C00269377D400BFE31B /* DataStore.swift */,
|
||||
E07FB07B26AF373600CDCFD8 /* Extensions.swift */,
|
||||
E07FB07F26AF39C300CDCFD8 /* NavBarItem.swift */,
|
||||
E07FB08126AF3B7200CDCFD8 /* PagerTabViewDelegate.swift */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E07FB08326AF3C6000CDCFD8 /* Modifiers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E07FB07D26AF377D00CDCFD8 /* PagerTabItemModifier.swift */,
|
||||
E07FB07926AF36B400CDCFD8 /* PagerSetAppearModifier.swift */,
|
||||
E07FB08426AF3CAA00CDCFD8 /* NavBarModifier.swift */,
|
||||
);
|
||||
path = Modifiers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E1FA589724C8BA020081FBE7 /* PagerTabStrip */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -215,9 +241,15 @@
|
|||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E07FB07C26AF373600CDCFD8 /* Extensions.swift in Sources */,
|
||||
E07FB08226AF3B7200CDCFD8 /* PagerTabViewDelegate.swift in Sources */,
|
||||
E07FB07E26AF377D00CDCFD8 /* PagerTabItemModifier.swift in Sources */,
|
||||
E1FA589924C8BC1B0081FBE7 /* XLPagerView.swift in Sources */,
|
||||
C7A02C01269377D400BFE31B /* DataStore.swift in Sources */,
|
||||
E07FB08526AF3CAA00CDCFD8 /* NavBarModifier.swift in Sources */,
|
||||
E07FB07A26AF36B400CDCFD8 /* PagerSetAppearModifier.swift in Sources */,
|
||||
28F8289A1C494B4200330CF4 /* iOS.swift in Sources */,
|
||||
E07FB08026AF39C300CDCFD8 /* NavBarItem.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
//
|
||||
// NavBarModifier.swift
|
||||
// PagerTabStrip
|
||||
//
|
||||
// Created by Cecilia Pirotto on 26/7/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
///
|
||||
/// Public Source Code
|
||||
///
|
||||
extension View {
|
||||
public func pagerTabItem<V>(@ViewBuilder _ pagerTabView: @escaping () -> V) -> some View where V: View {
|
||||
return self.modifier(PagerTabItem(navTabView: pagerTabView))
|
||||
}
|
||||
|
||||
public func onPageAppear(perform action: (() -> Void)?) -> some View {
|
||||
return self.modifier(PagerSetAppearItem(onPageAppear: action ?? {}))
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
//
|
||||
// NavBarModifier.swift
|
||||
// PagerTabStrip
|
||||
//
|
||||
// Created by Cecilia Pirotto on 26/7/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
internal struct NavBarModifier: ViewModifier {
|
||||
@EnvironmentObject var pagerSettings: PagerSettings
|
||||
@Binding private var indexSelected: Int
|
||||
@Binding private var itemCount: Int
|
||||
private var navBarItemWidth: CGFloat {
|
||||
let totalItemWidth = (pagerSettings.width - (pagerSettings.tabItemSpacing * CGFloat(itemCount - 1)))
|
||||
return totalItemWidth / CGFloat(itemCount)
|
||||
}
|
||||
|
||||
public init(itemCount: Binding<Int>, selection: Binding<Int>) {
|
||||
self._indexSelected = selection
|
||||
self._itemCount = itemCount
|
||||
}
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: pagerSettings.tabItemSpacing) {
|
||||
if itemCount > 0 && pagerSettings.width > 0 {
|
||||
ForEach(0...itemCount-1, id: \.self) { idx in
|
||||
NavBarItem(id: idx, selection: $indexSelected)
|
||||
.frame(height: pagerSettings.tabItemHeight)
|
||||
}
|
||||
}
|
||||
}
|
||||
.frame(height: pagerSettings.tabItemHeight)
|
||||
HStack {
|
||||
if let width = navBarItemWidth, width > 0, width <= pagerSettings.width {
|
||||
let x = -self.pagerSettings.contentOffset / CGFloat(itemCount) + width / 2
|
||||
Rectangle()
|
||||
.fill(pagerSettings.indicatorBarColor)
|
||||
.animation(.default)
|
||||
.frame(width: width)
|
||||
.position(x: x, y: 0)
|
||||
}
|
||||
}
|
||||
.frame(height: pagerSettings.indicatorBarHeight)
|
||||
content
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal extension GeometryReader {
|
||||
func navBar(itemCount: Binding<Int>, selection: Binding<Int>) -> some View {
|
||||
return self.modifier(NavBarModifier(itemCount: itemCount, selection: selection))
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
//
|
||||
// PagerSetAppearModifier.swift
|
||||
// PagerTabStrip
|
||||
//
|
||||
// Created by Cecilia Pirotto on 26/7/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
internal struct PagerSetAppearItem: ViewModifier {
|
||||
@EnvironmentObject var navContentViews : DataStore
|
||||
@EnvironmentObject var pagerSettings: PagerSettings
|
||||
var onPageAppear: () -> Void
|
||||
@State var index = -1
|
||||
|
||||
init(onPageAppear: @escaping () -> Void) {
|
||||
self.onPageAppear = onPageAppear
|
||||
}
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
content
|
||||
.overlay(
|
||||
GeometryReader { reader in
|
||||
Color.clear
|
||||
.onAppear {
|
||||
DispatchQueue.main.async {
|
||||
let frame = reader.frame(in: .named("XLPagerViewScrollView"))
|
||||
index = Int(round((frame.minX - pagerSettings.contentOffset) / pagerSettings.width))
|
||||
navContentViews.setAppear(callback: onPageAppear, at: index)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
//
|
||||
// PagerTabItemModifier.swift
|
||||
// PagerTabStrip
|
||||
//
|
||||
// Created by Cecilia Pirotto on 26/7/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
internal struct PagerTabItem<NavTabView: View> : ViewModifier {
|
||||
@EnvironmentObject var navContentViews : DataStore
|
||||
@EnvironmentObject var pagerSettings: PagerSettings
|
||||
var navTabView: () -> NavTabView
|
||||
@State var index = -1
|
||||
|
||||
init(navTabView: @escaping () -> NavTabView) {
|
||||
self.navTabView = navTabView
|
||||
self.index = index
|
||||
}
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
content
|
||||
.overlay(
|
||||
GeometryReader { reader in
|
||||
Color.clear
|
||||
.onAppear {
|
||||
DispatchQueue.main.async {
|
||||
let frame = reader.frame(in: .named("XLPagerViewScrollView"))
|
||||
index = Int(round((frame.minX - pagerSettings.contentOffset) / pagerSettings.width))
|
||||
let tabView = navTabView()
|
||||
let tabViewDelegate = navTabView() as? PagerTabViewDelegate
|
||||
navContentViews.setView(AnyView(tabView),
|
||||
tabViewDelegate: tabViewDelegate,
|
||||
at: index)
|
||||
}
|
||||
}.onDisappear {
|
||||
navContentViews.items.value[index]?.tabViewDelegate?.setState(state: .normal)
|
||||
navContentViews.remove(at: index)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
//
|
||||
// NavBarItem.swift
|
||||
// PagerTabStrip
|
||||
//
|
||||
// Created by Cecilia Pirotto on 26/7/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
internal struct NavBarItem: View {
|
||||
@EnvironmentObject var navContentViews: DataStore
|
||||
@Binding private var currentIndex: Int
|
||||
private var id: Int
|
||||
|
||||
public init(id: Int, selection: Binding<Int>) {
|
||||
self._currentIndex = selection
|
||||
self.id = id
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
if id < navContentViews.items.value.keys.count {
|
||||
Button(action: {
|
||||
self.currentIndex = id
|
||||
}, label: {
|
||||
navContentViews.items.value[id]?.view
|
||||
}).buttonStyle(PlainButtonStyle())
|
||||
.onLongPressGesture(minimumDuration: 0, maximumDistance: .infinity) { pressing in
|
||||
navContentViews.items.value[id]?.tabViewDelegate?.setState(state: pressing ? .highlighted : .selected)
|
||||
} perform: {}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
//
|
||||
// PagerTabViewDelegate.swift
|
||||
// PagerTabStrip
|
||||
//
|
||||
// Created by Cecilia Pirotto on 26/7/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
public enum PagerTabViewState {
|
||||
case selected
|
||||
case highlighted
|
||||
case normal
|
||||
}
|
||||
|
||||
public protocol PagerTabViewDelegate {
|
||||
func setState(state: PagerTabViewState)
|
||||
}
|
|
@ -7,174 +7,8 @@
|
|||
import SwiftUI
|
||||
|
||||
///
|
||||
/// Private Source Code
|
||||
/// Public Source Code
|
||||
///
|
||||
|
||||
private struct PagerTabView<Content: View, NavTabView: View>: View {
|
||||
@EnvironmentObject internal var navContentViews : DataStore
|
||||
private var content: () -> Content
|
||||
private var navTabView : () -> NavTabView
|
||||
|
||||
init(@ViewBuilder navTabView: @escaping () -> NavTabView, @ViewBuilder content: @escaping () -> Content) {
|
||||
self.content = content
|
||||
self.navTabView = navTabView
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
content()
|
||||
}
|
||||
}
|
||||
|
||||
private struct PagerSetAppearItem: ViewModifier {
|
||||
@EnvironmentObject var navContentViews : DataStore
|
||||
@EnvironmentObject var pagerSettings: PagerSettings
|
||||
var onPageAppear: () -> Void
|
||||
@State var index = -1
|
||||
|
||||
init(onPageAppear: @escaping () -> Void) {
|
||||
self.onPageAppear = onPageAppear
|
||||
}
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
content
|
||||
.overlay(
|
||||
GeometryReader { reader in
|
||||
Color.clear
|
||||
.onAppear {
|
||||
DispatchQueue.main.async {
|
||||
let frame = reader.frame(in: .named("XLPagerViewScrollView"))
|
||||
index = Int(round((frame.minX - pagerSettings.contentOffset) / pagerSettings.width))
|
||||
navContentViews.setAppear(callback: onPageAppear, at: index)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private struct PagerTabItem<NavTabView: View> : ViewModifier {
|
||||
@EnvironmentObject var navContentViews : DataStore
|
||||
@EnvironmentObject var pagerSettings: PagerSettings
|
||||
var navTabView: () -> NavTabView
|
||||
@State var index = -1
|
||||
|
||||
init(navTabView: @escaping () -> NavTabView) {
|
||||
self.navTabView = navTabView
|
||||
self.index = index
|
||||
}
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
PagerTabView(navTabView: navTabView) {
|
||||
content
|
||||
.overlay(
|
||||
GeometryReader { reader in
|
||||
Color.clear
|
||||
.onAppear {
|
||||
DispatchQueue.main.async {
|
||||
let frame = reader.frame(in: .named("XLPagerViewScrollView"))
|
||||
index = Int(round((frame.minX - pagerSettings.contentOffset) / pagerSettings.width))
|
||||
let tabView = navTabView()
|
||||
let tabViewDelegate = navTabView() as? PagerTabViewDelegate
|
||||
navContentViews.setView(AnyView(tabView),
|
||||
tabViewDelegate: tabViewDelegate,
|
||||
at: index)
|
||||
}
|
||||
}.onDisappear {
|
||||
navContentViews.items.value[index]?.tabViewDelegate?.setState(state: .normal)
|
||||
navContentViews.remove(at: index)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private struct NavBarModifier: ViewModifier {
|
||||
@EnvironmentObject var pagerSettings: PagerSettings
|
||||
@Binding private var indexSelected: Int
|
||||
@Binding private var itemCount: Int
|
||||
private var navBarItemWidth: CGFloat {
|
||||
let totalItemWidth = (pagerSettings.width - (pagerSettings.tabItemSpacing * CGFloat(itemCount - 1)))
|
||||
return totalItemWidth / CGFloat(itemCount)
|
||||
}
|
||||
|
||||
public init(itemCount: Binding<Int>, selection: Binding<Int>) {
|
||||
self._indexSelected = selection
|
||||
self._itemCount = itemCount
|
||||
}
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: pagerSettings.tabItemSpacing) {
|
||||
if itemCount > 0 && pagerSettings.width > 0 {
|
||||
ForEach(0...itemCount-1, id: \.self) { idx in
|
||||
NavBarItem(id: idx, selection: $indexSelected)
|
||||
.frame(height: pagerSettings.tabItemHeight)
|
||||
}
|
||||
}
|
||||
}
|
||||
.frame(height: pagerSettings.tabItemHeight)
|
||||
HStack {
|
||||
if let width = navBarItemWidth, width > 0, width <= pagerSettings.width {
|
||||
let x = -self.pagerSettings.contentOffset / CGFloat(itemCount) + width / 2
|
||||
Rectangle()
|
||||
.fill(pagerSettings.indicatorBarColor)
|
||||
.animation(.default)
|
||||
.frame(width: width)
|
||||
.position(x: x, y: 0)
|
||||
}
|
||||
}
|
||||
.frame(height: pagerSettings.indicatorBarHeight)
|
||||
content
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private struct PagerContainerView<Content: View>: View {
|
||||
let content: () -> Content
|
||||
|
||||
init(@ViewBuilder content: @escaping () -> Content) {
|
||||
self.content = content
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
content()
|
||||
}
|
||||
}
|
||||
|
||||
extension PagerContainerView {
|
||||
@available(iOS 14.0, *)
|
||||
internal func navBar(itemCount: Binding<Int>, selection: Binding<Int>) -> some View {
|
||||
return self.modifier(NavBarModifier(itemCount: itemCount, selection: selection))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private struct NavBarItem: View {
|
||||
@EnvironmentObject var navContentViews: DataStore
|
||||
@Binding private var currentIndex: Int
|
||||
private var id: Int
|
||||
|
||||
public init(id: Int, selection: Binding<Int>) {
|
||||
self._currentIndex = selection
|
||||
self.id = id
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
if id < navContentViews.items.value.keys.count {
|
||||
Button(action: {
|
||||
self.currentIndex = id
|
||||
}, label: {
|
||||
navContentViews.items.value[id]?.view
|
||||
}).buttonStyle(PlainButtonStyle())
|
||||
.onLongPressGesture(minimumDuration: 0, maximumDistance: .infinity) { pressing in
|
||||
navContentViews.items.value[id]?.tabViewDelegate?.setState(state: pressing ? .highlighted : .selected)
|
||||
} perform: {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PagerSettings: ObservableObject {
|
||||
@Published var width: CGFloat = 0
|
||||
@Published var tabItemSpacing: CGFloat
|
||||
|
@ -191,10 +25,6 @@ public class PagerSettings: ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
///
|
||||
/// Public Source Code
|
||||
///
|
||||
|
||||
@available(iOS 14.0, *)
|
||||
public struct XLPagerView<Content> : View where Content : View {
|
||||
|
||||
|
@ -222,7 +52,7 @@ public struct XLPagerView<Content> : View where Content : View {
|
|||
}
|
||||
|
||||
public var body: some View {
|
||||
PagerContainerView {
|
||||
// PagerContainerView {
|
||||
GeometryReader { gproxy in
|
||||
HStack(spacing: 0) {
|
||||
content()
|
||||
|
@ -288,7 +118,7 @@ public struct XLPagerView<Content> : View where Content : View {
|
|||
.onAppear {
|
||||
pagerSettings.width = gproxy.size.width
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
.navBar(itemCount: $itemCount, selection: $currentIndex)
|
||||
.environmentObject(self.navContentViews)
|
||||
|
@ -308,22 +138,21 @@ public struct XLPagerView<Content> : View where Content : View {
|
|||
}
|
||||
}
|
||||
|
||||
public enum PagerTabViewState {
|
||||
case selected
|
||||
case highlighted
|
||||
case normal
|
||||
}
|
||||
|
||||
public protocol PagerTabViewDelegate {
|
||||
func setState(state: PagerTabViewState)
|
||||
}
|
||||
|
||||
extension View {
|
||||
public func pagerTabItem<V>(@ViewBuilder _ pagerTabView: @escaping () -> V) -> some View where V: View {
|
||||
return self.modifier(PagerTabItem(navTabView: pagerTabView))
|
||||
}
|
||||
|
||||
public func onPageAppear(perform action: (() -> Void)?) -> some View {
|
||||
return self.modifier(PagerSetAppearItem(onPageAppear: action ?? {}))
|
||||
}
|
||||
}
|
||||
//private struct PagerContainerView<Content: View>: View {
|
||||
// let content: () -> Content
|
||||
//
|
||||
// init(@ViewBuilder content: @escaping () -> Content) {
|
||||
// self.content = content
|
||||
// }
|
||||
//
|
||||
// var body: some View {
|
||||
// content()
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//extension PagerContainerView {
|
||||
// @available(iOS 14.0, *)
|
||||
// internal func navBar(itemCount: Binding<Int>, selection: Binding<Int>) -> some View {
|
||||
// return self.modifier(NavBarModifier(itemCount: itemCount, selection: selection))
|
||||
// }
|
||||
//}
|
||||
|
|
Loading…
Reference in New Issue