From 57f2b2865b295620bd0fe72dfe4213905335fa18 Mon Sep 17 00:00:00 2001 From: Zoe winson Date: Tue, 12 Mar 2024 14:31:31 +0800 Subject: [PATCH] add popMenuContentInset --- PopMenu/Classes/PopMenuAppearance.swift | 3 +++ .../PopMenuViewController.swift | 25 +++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/PopMenu/Classes/PopMenuAppearance.swift b/PopMenu/Classes/PopMenuAppearance.swift index 9a4085d..35c5cfe 100644 --- a/PopMenu/Classes/PopMenuAppearance.swift +++ b/PopMenu/Classes/PopMenuAppearance.swift @@ -50,6 +50,9 @@ final public class PopMenuAppearance: NSObject { /// The presentation style public var popMenuPresentationStyle: PopMenuPresentationStyle = .cover() + + /// ContentInset of menu, includes left right top bottom + public var popMenuContentInset: UIEdgeInsets = .zero } diff --git a/PopMenu/View Controller & Views/PopMenuViewController.swift b/PopMenu/View Controller & Views/PopMenuViewController.swift index f2507f9..5c7e55c 100644 --- a/PopMenu/View Controller & Views/PopMenuViewController.swift +++ b/PopMenu/View Controller & Views/PopMenuViewController.swift @@ -337,7 +337,7 @@ extension PopMenuViewController { height = CGFloat(actions.count) * appearance.popMenuActionHeight } - let size = CGSize(width: calculateContentWidth(), height: height) + let size = CGSize(width: calculateContentWidth() + appearance.popMenuContentInset.left + appearance.popMenuContentInset.right, height: height + appearance.popMenuContentInset.top + appearance.popMenuContentInset.bottom) let origin = calculateContentOrigin(with: size) return CGRect(origin: origin, size: size) @@ -463,7 +463,7 @@ extension PopMenuViewController { actionsView.addArrangedSubview(action.view) } - + // Check add scroll view or not if actions.count >= (appearance.popMenuActionCountForScrollable) { // Scrollable actions @@ -478,29 +478,28 @@ extension PopMenuViewController { contentView.addSubview(scrollView) NSLayoutConstraint.activate([ - scrollView.leftAnchor.constraint(equalTo: contentView.leftAnchor), - scrollView.topAnchor.constraint(equalTo: contentView.topAnchor), - scrollView.rightAnchor.constraint(equalTo: contentView.rightAnchor), - scrollView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + scrollView.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: appearance.popMenuContentInset.left), + scrollView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: appearance.popMenuContentInset.top), + scrollView.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -appearance.popMenuContentInset.right), + scrollView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -appearance.popMenuContentInset.bottom) ]) NSLayoutConstraint.activate([ - actionsView.leftAnchor.constraint(equalTo: contentView.leftAnchor), - actionsView.rightAnchor.constraint(equalTo: contentView.rightAnchor), + actionsView.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: appearance.popMenuContentInset.left), + actionsView.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -appearance.popMenuContentInset.right), actionsView.topAnchor.constraint(equalTo: scrollView.topAnchor), actionsView.heightAnchor.constraint(equalToConstant: scrollView.contentSize.height) ]) } else { // Not scrollable actionsView.addGestureRecognizer(panGestureForMenu) - contentView.addSubview(actionsView) NSLayoutConstraint.activate([ - actionsView.leftAnchor.constraint(equalTo: contentView.leftAnchor), - actionsView.rightAnchor.constraint(equalTo: contentView.rightAnchor), - actionsView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 4), - actionsView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -4) + actionsView.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: appearance.popMenuContentInset.left), + actionsView.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -appearance.popMenuContentInset.right), + actionsView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: appearance.popMenuContentInset.top), + actionsView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -appearance.popMenuContentInset.bottom) ]) } }