SWindow 版本 0.2.0

SWindow 0.2.0

Szymon Lorenz 维护。



SWindow 0.2.0

SWindow

Language License TravisCI CocoaPods Carthage

SWindow 是一个易于使用的 Swift 窗口管理器。不要花费几个小时编写代码来显示和隐藏模态视图控制器,停止在调试为什么您的模态显示消失而浪费时间。没有问题,简单地、安全地显示您的控制器!

💊用法

基本示例 让您的控制器遵守 SModalPresentation 协议

class YourController: UIViewController, SModalPresentation {}

要显示您的控制器,请简单调用

let controller = YourController()
controller.sPresent()

要关闭或从等待队列中删除,请调用

controller.sWithdraw()

如果您想用另一个控制器替换当前显示的控制器,请调用

controller.sReplace(with: newController)

SWindow 会自动将您的控制器添加到队列中,如果其他控制器正在显示。此外,在 sWithdraw() 事件之后关闭,将显示队列中优先级最高的第一个控制器。

高级配置 上述是一个相当简单的示例。然而,SWindow 提供了多种配置选项。

首先,您可以扩展 SModal 类以包含自己的值。下面是一个您可以修改的示例。

extension SModal {
    static var shouldMakeKey: Bool {
        return false
    }
    
    static var windowLevel: UIWindowLevel {
        return UIWindowLevelAlert - 1
    }
    
    static var animationDuration: TimeInterval {
        return 0.2
    }
}

首先,在每一个项目中,我会扩展 SModal,使其在 shouldMakeKey 下返回 true,这样我们的窗口就会成为 keyWindow 并且会接收系统事件。

第二件事您可以调整的是 SModalPresentation。如果您的控制器在 canDismiss 下返回 true,则可以被 SWindow 关闭。多亏了这个参数,无论是从队列中弹出,还是当前显示的控制器在这一标志下返回正值,SWindow 都会关闭它,并显示队列中的下一个控制器。

extension YourController {    
    public var canDismiss: Bool {
        return false
    }
    
    public var priority: SModalPriority {
        return .Required
    }
}

如我之前所写,您的控制器在 dequeue 显示时按优先级排序。您可以更改每个控制器相对于 SModalPresentation 的优先级。

最后要扩展的是:sPresent()sWithdraw()sReplace(with: UIViewController)。这些方法都有额外的参数,默认值如下:animated: Bool = false, completion: (() -> Void)? = nil

🔧安装

CocoaPods

将以下行添加到您的 Podfile 中:pod "SWindow"

Carthage

将以下行添加到您的 Cartfile 中:github "shial4/swindow"

手动

克隆仓库并将文件 SWindow.swift 拖入您的 Xcode 项目。

Swift Package Manager

将以下行添加到您的 Package.swift 中:.package(url: "https://github.com/shial4/SWindow.git", from: "0.1.10")

⭐ 贡献

欢迎为这个项目贡献! :)

问题

只需在GitHub上创建一个问题。

📝许可协议

此项目在MIT许可协议下发布。