You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

80 lines
2.2 KiB

//
// ViewPager.swift
// GME Remit
//
// Created by Armaan Shrestha on 21/08/2022.
// Copyright © 2022 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class ViewPager: UIView {
// MARK: - Initialization
init(tabSizeConfiguration: TabbedView.SizeConfiguration) {
self.sizeConfiguration = tabSizeConfiguration
super.init(frame: .zero)
self.setupUI()
tabbedView.delegate = self
pagedView.delegate = self
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public let sizeConfiguration: TabbedView.SizeConfiguration
public lazy var tabbedView: TabbedView = {
let tabbedView = TabbedView(
sizeConfiguration: sizeConfiguration
)
return tabbedView
}()
public let pagedView = PagedView()
// MARK: - UI Setup
private func setupUI() {
self.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(tabbedView)
self.addSubview(pagedView)
NSLayoutConstraint.activate([
tabbedView.leftAnchor
.constraint(equalTo: self.leftAnchor),
tabbedView.topAnchor
.constraint(equalTo: self.topAnchor),
tabbedView.rightAnchor
.constraint(equalTo: self.rightAnchor),
tabbedView.heightAnchor
.constraint(equalToConstant: sizeConfiguration.height)
])
NSLayoutConstraint.activate([
pagedView.leftAnchor
.constraint(equalTo: self.leftAnchor),
pagedView.topAnchor
.constraint(equalTo: self.tabbedView.bottomAnchor),
pagedView.rightAnchor
.constraint(equalTo: self.rightAnchor),
pagedView.bottomAnchor
.constraint(equalTo: self.bottomAnchor)
])
}
}
extension ViewPager: TabbedViewDelegate {
func didMoveToTab(at index: Int) {
self.pagedView.moveToPage(at: index)
}
}
extension ViewPager: PagedViewDelegate {
func didMoveToPage(index: Int) {
self.tabbedView.moveToTab(at: index)
}
}