Extract out TouchTransparentStackView

This commit is contained in:
Jed Fox 2022-12-21 19:29:12 -05:00
parent ff502a4868
commit dc6a86f846
No known key found for this signature in database
GPG Key ID: 0B61D18EA54B47E1
2 changed files with 26 additions and 16 deletions

View File

@ -26,22 +26,6 @@ final class MediaPreviewViewController: UIViewController, NeedsDependency {
let pagingViewController = MediaPreviewPagingViewController()
let topToolbar: UIStackView = {
class TouchTransparentStackView: UIStackView {
// allow button hit boxes to grow outside of this views bounds
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
subviews.contains { $0.point(inside: $0.convert(point, from: self), with: event) }
}
// allow taps on blank areas to pass through
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let view = super.hitTest(point, with: event)
if view == self {
return nil
}
return view
}
}
let stackView = TouchTransparentStackView()
stackView.axis = .horizontal
stackView.distribution = .equalSpacing

View File

@ -0,0 +1,26 @@
//
// TouchTransparentStackView.swift
//
//
// Created by Jed Fox on 2022-12-21.
//
import UIKit
/// A subclass of `UIStackView` that allows touches that arent captured by any
/// of its subviews to pass through to views beneath this view in the Z-order.
public class TouchTransparentStackView: UIStackView {
// allow subview hit boxes to grow outside of this views bounds
public override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
subviews.contains { $0.point(inside: $0.convert(point, from: self), with: event) }
}
// allow taps on blank areas to pass through
public override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let view = super.hitTest(point, with: event)
if view == self {
return nil
}
return view
}
}