Files
Woka_Native_iOS/WOKA/TabBar & SideMenu/SideMenuVC.swift

119 lines
4.3 KiB
Swift

//
// SideMenuVC.swift
// WOKA
//
// Created by MacBook Pro on 21/05/24.
//
import UIKit
class SideMenuVC: UIViewController {
@IBOutlet weak var logoutBtn: UIButton!
@IBOutlet weak var selectionMenuTrailingConstraint: NSLayoutConstraint!
@IBOutlet weak var languageControl: CustomizableSegmentControl!
@IBOutlet weak var theme1: UIImageView!
@IBOutlet weak var theme2: UIImageView!
var vm = SideMenuVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
@IBAction func closeBtnTapped(_ sender: UIButton) {
self.sideMenuController?.hideMenu()
}
}
class CustomizableSegmentControl: UISegmentedControl {
private(set) lazy var radius:CGFloat = bounds.height / 2
private let segmentInset: CGFloat = 5 //your inset amount
private let segmentImage: UIImage? = UIImage(color: UIColor.white) //your color
override init(items: [Any]?) {
super.init(items: items)
selectedSegmentIndex = 0
}
required init?(coder: NSCoder) {
// fatalError("init(coder:) has not been implemented")
super.init(coder: coder)
}
override func layoutSubviews(){
super.layoutSubviews()
self.backgroundColor = #colorLiteral(red: 0.01960784314, green: 0, blue: 0.2196078431, alpha: 1)
// selected option color
self.setTitleTextAttributes([.foregroundColor: UIColor.black, .font : UIFont.systemFont(ofSize: 16, weight: .heavy)], for: .selected)
// color of other options
self.setTitleTextAttributes([.foregroundColor: UIColor.white, .font : UIFont.systemFont(ofSize: 16, weight: .heavy)], for: .normal)
//background
layer.cornerRadius = radius
//foreground
let foregroundIndex = numberOfSegments
if subviews.indices.contains(foregroundIndex), let foregroundImageView = subviews[foregroundIndex] as? UIImageView{
foregroundImageView.bounds = foregroundImageView.bounds.insetBy(dx: segmentInset, dy: segmentInset)
foregroundImageView.image = segmentImage //substitute with our own colored image
foregroundImageView.layer.removeAnimation(forKey: "SelectionBounds") //this removes the weird scaling animation!
foregroundImageView.layer.masksToBounds = true
foregroundImageView.layer.cornerRadius = foregroundImageView.bounds.height/2
}
}
}
extension UIImage{
//creates a UIImage given a UIColor
public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {
let rect = CGRect(origin: .zero, size: size)
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
color.setFill()
UIRectFill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
guard let cgImage = image?.cgImage else { return nil }
self.init(cgImage: cgImage)
}
}
//extension UIView {
//
// /// Apply gradient colors to the view.
// ///
// /// - Parameters:
// /// - colors: An array of UIColor objects defining the color of each gradient stop.
// /// - startPoint: The start point of the gradient, defined in the unit coordinate space. The start point corresponds to the top-left corner of the layer's bounds rectangle.
// /// - endPoint: The end point of the gradient, defined in the unit coordinate space. The end point corresponds to the bottom-right corner of the layer's bounds rectangle.
// ///
// func applyGradient(colors: [UIColor], startPoint: CGPoint, endPoint: CGPoint) {
// // Create a new CAGradientLayer instance
// let gradientLayer = CAGradientLayer()
//
// // Set the frame of the gradient layer to match the bounds of the view
// gradientLayer.frame = bounds
//
// // Convert the array of UIColor objects to an array of CGColor objects
// gradientLayer.colors = colors.map { $0.cgColor }
//
// // Set the start and end points of the gradient
// gradientLayer.startPoint = startPoint
// gradientLayer.endPoint = endPoint
//
// // Insert the gradient layer as the bottom layer of the view's layer hierarchy
// layer.insertSublayer(gradientLayer, at: 0)
// }
//}