SwiftOverlays 是一个用于显示各种弹出窗口和通知的 Swift GUI 库。
SwiftOverlays 的动态标志是由 Crafted Pixels 慈善提供的
特性
SwiftOverlays 提供了多种通知用户的方式
- 等待覆盖层:带有活动指示器的简单覆盖层
- 带有文本的等待覆盖层
- 只带文本的覆盖层
- 带图像和文本的覆盖层(可用于与 PPSwiftGifs 结合显示自定义动画 GIF,而不是 UIActivityIndicatorView)
- 所有上述方式均阻止任何用户交互
- 状态栏顶部的通知,类似于本机 iOS 本地/推送通知
安装
手册
只需克隆并将 SwiftOverlays.swift
文件添加到项目中。
Carthage
> Cartfile
使用 nano 打开 Cartfile
- 添加
github "peterprokop/SwiftOverlays" ~> 5.0.0
到 Cartfile 中 - 保存:按
ctrl-x
,y
,enter
- 运行
carthage update
- 将
SwiftOverlays.framework
从Carthage/Build/iOS
拷贝到您的项目中 - 确保在您的目标(target)的
嵌入式二进制文件
(Embedded Binaries)部分中添加SwiftOverlays
,否则您将会得到dyld library not loaded referenced from ... reason image not found
错误 - 在您的视图控制器代码顶部添加
import SwiftOverlays
Cocoapods
- 请确保您使用的是最新的稳定版 Cocoapods:运行
pod --version
- 如果不是,请更新它:运行
sudo gem install cocoapods
- 在您的项目根目录中运行
pod init
- 运行
nano Podfile
,添加
pod 'SwiftOverlays', '~> 5.0.0'
use_frameworks!
- 保存:按
ctrl-x
,y
,enter
运行
pod update
- 打开生成的
.xcworkspace
文件 - 别忘了导入 SwiftOverlays:添加
import SwiftOverlays
!
需求
- iOS 10.0+
- Xcode 10.0+
- Swift 4.2(如果需要较低的 Swift 版本,请参阅 swift-3.0 以及其他版本)
使用方法
如果您使用的是 CocoaPods,用 import SwiftOverlays
导入库
您可以使用库提供的 UIViewController 方便方法
// In your view controller:
// Wait overlay
self.showWaitOverlay()
// Wait overlay with text
let text = "Please wait..."
self.showWaitOverlayWithText(text)
// Overlay with text only
let text = "This is a text-only overlay...\n...spanning several lines"
self.showTextOverlay(text)
// Remove everything
self.removeAllOverlays()
// Notification on top of the status bar
UIViewController.showOnTopOfStatusBar(annoyingNotificationView!, duration: 5)
// Block user interaction
SwiftOverlays.showBlockingWaitOverlayWithText("This is blocking overlay!")
// Don't forget to unblock!
SwiftOverlays.removeAllBlockingOverlays()
与 UITableViewController/UICollectionViewController 一起使用
您不能直接在 UITableViewController 中使用 SwiftOverlays 便利方法 - 因为它的视图是一个 UITableView,并且叠加(overlay)会随着滚动。
相反,我建议使用 UIViewController 而不是 UITableViewController,并添加 UITableView 作为子视图。(同样适用于 UICollectionViewController)
如果由于某些原因您不能使用 UIViewController,您可以做一些类似的事情
if let superview = self.view.superview {
SwiftOverlays.showCenteredWaitOverlayWithText(superview, text: "Please wait...")
SwiftOverlays.removeAllOverlaysFromView(superview)
}
(但在那种情况下,叠加(overlay)将被添加到父视图(superview),显然只有当父视图可用时才应这样做 - 例如,在控制器中的 viewDidAppear 方法中。)
贡献
欢迎您进行分支操作并提交拉取请求
其他项目
- StarryStars - 用于显示和编辑评分的 iOS GUI 库。
- AlertyAlert - AlertyAlert 是一个用于所有 alert 需求的漂亮且蓬松的 iOS alert 库。