Files
Attractor/App/Find on Page/FindOnPageView.swift

72 lines
2.2 KiB
Swift
Raw Permalink Normal View History

2020-09-30 18:06:47 -07:00
//
// FindOnPageView.swift
// App
//
// Created by James Magahern on 9/30/20.
//
import UIKit
class FindOnPageView: UIView
{
let textField = UISearchTextField(frame: .zero)
let doneButton = ReliefButton()
let nextResultButton = ReliefButton()
let prevResultButton = ReliefButton()
private let arrowControls = SegmentedReliefButton(children: [])
let backgroundView = UIVisualEffectView(effect: UIBlurEffect(style: .systemChromeMaterial))
convenience init() {
self.init(frame: .zero)
arrowControls.children = [ prevResultButton, nextResultButton ]
addSubview(backgroundView)
addSubview(textField)
addSubview(doneButton)
addSubview(arrowControls)
textField.autocapitalizationType = .none
textField.autocorrectionType = .no
doneButton.setTitle("Done", for: .normal)
doneButton.setTitleColor(.label, for: .normal)
doneButton.constrainedToSquare = false
nextResultButton.setImage(UIImage(systemName: "chevron.down"), for: .normal)
prevResultButton.setImage(UIImage(systemName: "chevron.up"), for: .normal)
}
override func layoutSubviews() {
super.layoutSubviews()
backgroundView.frame = bounds
let bounds = self.bounds
.insetBy(dx: 8.0, dy: 8.0)
.inset(by: safeAreaInsets)
let doneButtonPadding: CGFloat = 8.0
let doneButtonSize = doneButton.sizeThatFits(bounds.size)
doneButton.frame = CGRect(
x: bounds.width - doneButtonSize.width, y: bounds.minY,
width: doneButtonSize.width + doneButtonPadding, height: bounds.height
)
let arrowControlsSize = arrowControls.sizeThatFits(bounds.size)
arrowControls.frame = CGRect(
x: doneButton.frame.minX - doneButtonPadding - arrowControlsSize.width, y: bounds.minY,
width: arrowControlsSize.width, height: bounds.height
)
textField.frame = CGRect(
x: bounds.minX, y: bounds.minY,
width: arrowControls.frame.minX - bounds.minX - doneButtonPadding,
height: bounds.height
)
}
}