// // TitlebarView.swift // SBrowser // // Created by James Magahern on 7/29/20. // import UIKit class TitlebarView: UIView { public let titleLabelView = UILabel(frame: .zero) private let backgroundImageView = UIImageView(frame: .zero) convenience init() { self.init(frame: .zero) addSubview(backgroundImageView) addSubview(titleLabelView) titleLabelView.textColor = .white titleLabelView.layer.shadowColor = UIColor.black.cgColor titleLabelView.layer.shadowRadius = 0.0 titleLabelView.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) titleLabelView.font = UIFont.boldSystemFont(ofSize: 12.0) backgroundImageView.alpha = 0.98 } private func backgroundImageForSize(_ size: CGSize) -> UIImage? { var image: UIImage? = nil UIGraphicsBeginImageContext(CGSize(width: size.width, height: 1.0)) if let context = UIGraphicsGetCurrentContext() { let gradientColorsArray = [ UIColor(red: 0.101, green: 0.176, blue: 0.415, alpha: 1.0).cgColor, UIColor(red: 0.153, green: 0.000, blue: 0.153, alpha: 1.0).cgColor ] if let gradient = CGGradient(colorsSpace: nil, colors: gradientColorsArray as CFArray, locations: nil) { context.drawLinearGradient(gradient, start: .zero, end: CGPoint(x: size.width, y: 0.0), options: CGGradientDrawingOptions()) } image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext(); } return image } override func layoutSubviews() { super.layoutSubviews() backgroundImageView.frame = bounds titleLabelView.frame = bounds.avoiding(verticalInsets: safeAreaInsets).insetBy(dx: 8.0 + layoutMargins.left, dy: 0.0) if let image = backgroundImageView.image, image.size == bounds.size { // No op } else { backgroundImageView.image = backgroundImageForSize(bounds.size) } } }