72 lines
2.2 KiB
Swift
72 lines
2.2 KiB
Swift
|
|
//
|
||
|
|
// 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
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}
|