mirror of
https://github.com/confirmedcode/Lockdown-iOS.git
synced 2025-12-21 12:14:02 +01:00
56 lines
2.1 KiB
Swift
56 lines
2.1 KiB
Swift
//
|
|
// TablePaywallFeatureRowView.swift
|
|
// Lockdown
|
|
//
|
|
// Created by Alexander Parshakov on 12/5/22
|
|
// Copyright © 2022 Confirmed Inc. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
final class TablePaywallFeatureRowView: UIView, NibLoadable {
|
|
|
|
@IBOutlet private var featureLabel: UILabel!
|
|
|
|
@IBOutlet private var freeLevelIcon: UIImageView!
|
|
@IBOutlet private var vpnLevelIcon: UIImageView!
|
|
@IBOutlet private var proLevelIcon: UIImageView!
|
|
|
|
static func make(feature: PaywallTableFeature, isHighlighted: Bool) -> TablePaywallFeatureRowView {
|
|
let view = TablePaywallFeatureRowView.loadFromNib()
|
|
|
|
view.setupFeatureText(for: feature, isHighlighted: isHighlighted)
|
|
view.setupIcons(for: feature)
|
|
|
|
return view
|
|
}
|
|
|
|
private func setupFeatureText(for feature: PaywallTableFeature, isHighlighted: Bool) {
|
|
featureLabel.text = feature.body
|
|
featureLabel.textColor = isHighlighted ? .label : .gray
|
|
|
|
let fontSize: CGFloat = UIScreen.main.traitCollection.userInterfaceIdiom == .pad ? 16 : 11
|
|
featureLabel.font = .semiboldLockdownFont(size: fontSize)
|
|
}
|
|
|
|
private func setupIcons(for feature: PaywallTableFeature) {
|
|
freeLevelIcon.image = imageForAvailabilityStatus(feature.isAvailableForFree)
|
|
freeLevelIcon.tintColor = colorForAvailabilityStatus(feature.isAvailableForFree)
|
|
|
|
vpnLevelIcon.image = imageForAvailabilityStatus(feature.isAvailableOnVPN)
|
|
vpnLevelIcon.tintColor = colorForAvailabilityStatus(feature.isAvailableOnVPN)
|
|
|
|
proLevelIcon.image = imageForAvailabilityStatus(feature.isAvailableOnPro)
|
|
proLevelIcon.tintColor = colorForAvailabilityStatus(feature.isAvailableOnPro)
|
|
}
|
|
|
|
private func imageForAvailabilityStatus(_ isAvailable: Bool) -> UIImage {
|
|
let image = (isAvailable ? UIImage(named: "Checkmark") : UIImage(named: "ComparisonTableXmark"))
|
|
return image?.withRenderingMode(.alwaysTemplate) ?? UIImage()
|
|
}
|
|
|
|
private func colorForAvailabilityStatus(_ isAvailable: Bool) -> UIColor {
|
|
return isAvailable ? .confirmedBlue : .gray
|
|
}
|
|
}
|