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
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)
|
|
}
|
|
}
|