Implemented find on page UI
This commit is contained in:
71
App/Find on Page/FindOnPageView.swift
Normal file
71
App/Find on Page/FindOnPageView.swift
Normal file
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// 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
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user