// // Styler.swift // MVMCoreUI // // Created by Kevin Christiano on 4/1/20. // Copyright © 2020 Verizon Wireless. All rights reserved. // import Foundation open class Styler { //-------------------------------------------------- // MARK: - Enums //-------------------------------------------------- public enum Font: String { case Title2XLarge case TitleXLarge case BoldTitleLarge case RegularTitleLarge case BoldTitleMedium case RegularTitleMedium case BoldBodyLarge case RegularBodyLarge case BoldBodySmall case RegularBodySmall case BoldMicro case RegularMicro public func pointSize() -> CGFloat { switch self { case .Title2XLarge: return 36 case .TitleXLarge: return 32 case .BoldTitleLarge, .RegularTitleLarge: return 24 case .BoldTitleMedium, .RegularTitleMedium: return 20 case .BoldBodyLarge, .RegularBodyLarge: return 16 case .BoldBodySmall, .RegularBodySmall: return 13 case .BoldMicro, .RegularMicro: return 11 } } public func isBold() -> Bool { switch self { case .Title2XLarge, .TitleXLarge, .RegularTitleLarge, .RegularTitleMedium, .RegularBodyLarge, .RegularBodySmall, .RegularMicro: return false case .BoldTitleLarge, .BoldTitleMedium, .BoldBodyLarge, .BoldBodySmall, .BoldMicro: return true } } public func getFont(_ genericScaling: Bool = true) -> UIFont? { let size = genericScaling ? sizeFontGeneric(forCurrentDevice: pointSize()) : pointSize() return getMVA3FontSize(size, bold: isBold()) } public func styleLabel(_ label: UILabel, genericScaling: Bool = true) { label.font = getFont(genericScaling) label.textColor = .black } } //-------------------------------------------------- // MARK: - Functions //-------------------------------------------------- open class func sizeObjectGeneric(forCurrentDevice size: CGFloat) -> MFSizeObject? { let sizeObject = MFSizeObject(standardSize: size, standardiPadPortraitSize: size * 1.3) sizeObject?.addLargerThanCustomSize(size * 1.4, forThreshold: MFSizeStandardiPadLandscapeThreshold) sizeObject?.addLargerThanCustomSize(size * 1.5, forThreshold: MFSizeiPadProLandscapeThreshold) return sizeObject } open class func sizeFontGeneric(forCurrentDevice size: CGFloat) -> CGFloat { return sizeObjectGeneric(forCurrentDevice: size)?.getValueBasedOnApplicationWidth() ?? 0 } //-------------------------------------------------- // MARK: - Spacing //-------------------------------------------------- open class func setDefaultMarginsFor(_ view: UIView?, size: CGFloat, horizontal: Bool = true, vertical: Bool = false) { let horizontalPadding: CGFloat = horizontal ? Padding.Default.horizontalPadding(forSize: size) : 0 let verticalPadding: CGFloat = vertical ? PaddingDefaultVerticalSpacing3 : 0 DispatchQueue.main.async { MVMCoreUIUtility.setMarginsFor(view, leading: horizontalPadding, top: verticalPadding, trailing: horizontalPadding, bottom: verticalPadding) } } open class func setMarginsFor(_ view: UIView?, size: CGFloat, defaultHorizontal horizontal: Bool, top: CGFloat, bottom: CGFloat) { let horizontalPadding: CGFloat = horizontal ? Padding.Default.horizontalPadding(forSize: size) : 0 DispatchQueue.main.async { MVMCoreUIUtility.setMarginsFor(view, leading: horizontalPadding, top: top, trailing: horizontalPadding, bottom: bottom) } } open class func getMVA3FontSize(_ size: CGFloat, bold isBold: Bool) -> UIFont { if isBold { return size >= 15 ? MFFonts.mfFontDSBold(size) : MFFonts.mfFontTXBold(size) } else { return size >= 15 ? MFFonts.mfFontDSRegular(size) : MFFonts.mfFontTXRegular(size) } } }