SBCardPopup
轻松在弹出卡片 UI 中显示 UIViewController
或 UIView
。
示例
运行 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,这使得在设计卡片时围绕内容调整大小变得很容易。但是,这也意味着您需要提供完全描述卡片高度的约束。
在以下示例中,顶部标签被固定在视图控制器顶部,底部标签被固定在底部。由于两个标签之间没有约束连接,它们之间的距离是未知的,这将在尝试调整弹出卡片大小时导致问题。
通过在两个标签之间添加约束,已描述了卡片的完整高度。为了解决 Interface Builder 中的错误,您需要将视图控制器的大小调整到与约束输出匹配,或者将其中一个约束降低优先级。
安装
SBCardPopup 通过 CocoaPods 提供。要安装,只需将以下行添加到您的 Podfile 中
pod "SBCardPopup"
作者
Steve Barnegren,[email protected]
许可证
SBCardPopup项目遵循MIT许可证。有关更多信息,请参阅LICENSE文件。