| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //
- // IndeedLogoView.swift
- // App for Indeed
- //
- import Cocoa
- /// App logo from the asset catalog for splash and branding surfaces.
- enum IndeedBrandLogo {
- enum Variant {
- case standard
- case compact
- }
- static func logoImage(variant: Variant = .standard) -> NSImage? {
- switch variant {
- case .standard:
- NSImage(named: NSImage.Name("IndeedLogo"))
- case .compact:
- NSImage(named: NSImage.Name("IndeedLogoSmall"))
- }
- }
- }
- final class IndeedLogoView: NSView {
- private let imageView = NSImageView()
- private let variant: IndeedBrandLogo.Variant
- private var displayHeight: CGFloat
- private var sizeConstraints: [NSLayoutConstraint] = []
- override var intrinsicContentSize: NSSize {
- NSSize(width: displayHeight, height: displayHeight)
- }
- init(displayHeight: CGFloat = 44, variant: IndeedBrandLogo.Variant = .standard) {
- self.displayHeight = displayHeight
- self.variant = variant
- super.init(frame: .zero)
- setUp()
- }
- @available(*, unavailable)
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- func setDisplayHeight(_ height: CGFloat) {
- displayHeight = height
- sizeConstraints.forEach { $0.constant = height }
- invalidateIntrinsicContentSize()
- }
- private func setUp() {
- translatesAutoresizingMaskIntoConstraints = false
- setContentHuggingPriority(.required, for: .horizontal)
- setContentHuggingPriority(.required, for: .vertical)
- setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
- setContentCompressionResistancePriority(.defaultLow, for: .vertical)
- imageView.translatesAutoresizingMaskIntoConstraints = false
- imageView.imageScaling = .scaleProportionallyUpOrDown
- imageView.image = IndeedBrandLogo.logoImage(variant: variant)
- addSubview(imageView)
- let width = widthAnchor.constraint(equalToConstant: displayHeight)
- let height = heightAnchor.constraint(equalToConstant: displayHeight)
- sizeConstraints = [width, height]
- NSLayoutConstraint.activate(sizeConstraints + [
- imageView.leadingAnchor.constraint(equalTo: leadingAnchor),
- imageView.trailingAnchor.constraint(equalTo: trailingAnchor),
- imageView.topAnchor.constraint(equalTo: topAnchor),
- imageView.bottomAnchor.constraint(equalTo: bottomAnchor)
- ])
- setAccessibilityElement(true)
- setAccessibilityRole(.image)
- setAccessibilityLabel(AppMarketingLinks.displayName)
- }
- }
|