SBCardPopup 0.3.0

SBCardPopup 0.3.0

Steve Barnegren 维护。



  • Steve Barnegren

SBCardPopup

Version License Platform

轻松在弹出卡片 UI 中显示 UIViewControllerUIView

cardgif

示例

运行 Example/SBCardPopupExample.xcodeproj

使用说明

显示弹出窗口

创建一个传递您的视图控制器的 SBCardPopupViewController。 (如果您更喜欢,有一个方法可以传递 UIView 子类)。

调用 show(),传递当前视图控制器。

let cardPopup = SBCardPopupViewController(contentViewController: myViewController)
cardPopup.show(onViewController: self)

SBCardPopupContent 协议

您的视图控制器可以可选地遵守 SBCardPopupContent 协议。这允许视图控制器启用/禁用点击和滑动来关闭手势。

public protocol SBCardPopupContent: class {
    weak var popupViewController: SBCardPopupViewController? {get set}
    var allowsTapToDismissPopupCard: Bool {get}
    var allowsSwipeToDismissPopupCard: Bool {get}
}

该协议还将确保您的视图控制器具有对其容器 SBCardPopupViewController 的引用。如果需要在其上,例如按钮按压时,自行关闭,这将是很有用的。

@IBAction func closeButtonPressed(sender: UIButton){
	popupViewController?.close()
}

定制

可以修改 SBCardPopupViewController 的公共属性,例如圆角和禁用消失手势的标志。这些标志优先于 SBCardPopupContent 协议。

如果您希望禁用所有弹出窗口的手势,可以在弹出之前在 SBCardPopupViewController 上进行,并在您的应用程序中创建一个单独的弹出显示点,这样始终使用这些设置会更方便。

extension UIViewController {

	func presentViewControllerAsPopup(_ viewController: UIViewController) {
		
		let cardPopup = SBCardPopupViewController(contentViewController: viewController)
		cardPopup.cornerRadius = 5
		cardPopup.allowsTapToDismissPopupCard = true
		cardPopup.allowsSwipeToDismissPopupCard = false
		cardPopup.show(onViewController: self)
	}
}

创建弹窗 UI

SBCardPopupViewController 使用 AutoLayout,这使得在设计卡片时围绕内容调整大小变得很容易。但是,这也意味着您需要提供完全描述卡片高度的约束。

在以下示例中,顶部标签被固定在视图控制器顶部,底部标签被固定在底部。由于两个标签之间没有约束连接,它们之间的距离是未知的,这将在尝试调整弹出卡片大小时导致问题。

IMG

通过在两个标签之间添加约束,已描述了卡片的完整高度。为了解决 Interface Builder 中的错误,您需要将视图控制器的大小调整到与约束输出匹配,或者将其中一个约束降低优先级。

IMG

安装

SBCardPopup 通过 CocoaPods 提供。要安装,只需将以下行添加到您的 Podfile 中

pod "SBCardPopup"

作者

Steve Barnegren,[email protected]

许可证

SBCardPopup项目遵循MIT许可证。有关更多信息,请参阅LICENSE文件。