测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年1月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由Junior B.维护。
EasyDialogs 是一个受 Android 的 MaterialDialogs 启发的简单库。主要目标是提供一个强大的库,用于在 iOS 项目中创建可高度自定义但简单的警报视图。
以下是一个带有两个用于通过用户名和密码验证用户的文本字段的警报视图的快速示例。
EasyDialog.Builder(self)
.title(title: "Hello World") // tag -> 1
.textField(placeholder: "Username") // tag -> 2
.textField(placeholder: "Password", secure: true) // tag -> 3
.addButton(title: "Ok") { dialog in
let tfUsername = dialog.view.viewWithTag(2) as! UITextField
let tfPassword = dialog.view.viewWithTag(3) as! UITextField
print("\(tfUsername.text ?? "") \(tfPassword.text ?? "")" )
dialog.dismiss(animated: true)
}
.addButton(title: "Cancel") { dialog in
dialog.dismiss(animated: true)
}
.build()
.show()
此项目正在由 @bontoJR 活跃开发,处于非常早期阶段。
使用 Cocoapods 或手动安装非常简单。如果您需要 Carthage 支持,请考虑创建一个 PR 以支持它。
如果您不想使用 Cocoapods 或 Cartaghe 导入此项目,您可以直接将 EasyDialog.swift
文件导入到您的项目中。
EasyDialogs 致力于通过链式函数和回调创建简单且可自定义的警报视图。以下是一些示例。
这是创建具有“确定”按钮的简单对话框的代码
EasyDialog.Builder(self)
.title(title: "Hello World") // tag -> 1
.text(content: "This is a basic dialog")
.space(ofSize: 4)
.addButton(title: "Ok") { dialog in
dialog.dismiss(animated: true)
}
.build()
.show()
创建一个简单的评分对话框相当简单,看起来像这样
EasyDialog.Builder(self)
.title(title: "Rating") // tag -> 1
.label(text: "If you like this app, please consider rate us.", textAlignment: .center)
.positiveButton(title: "Yes") { dialog in
print("process now")
dialog.dismiss(animated: true)
}
.addButton(title: "Remind me later") { dialog in
print("remind later")
dialog.dismiss(animated: true)
}
.destructiveButton(title: "Not now")
.build()
.show()
创建高级对话框的方法如下
EasyDialog.Builder(self)
.title(title: "User and Pass") // tag -> 1
.textField(placeholder: "Username") // tag -> 2
.textField(placeholder: "Password", secure: true) // tag -> 3
.view(view: UIActivityIndicatorView(activityIndicatorStyle: .gray)) // tag -> 4
.positiveButton(title: "Login") { dialog in
let tfUsername = dialog.view.viewWithTag(2) as! UITextField
let tfPassword = dialog.view.viewWithTag(3) as! UITextField
let ai = dialog.view.viewWithTag(4) as! UIActivityIndicatorView
tfUsername.isUserInteractionEnabled = false
tfPassword.isUserInteractionEnabled = false
ai.startAnimating()
print("\(tfUsername.text ?? "") \(tfPassword.text ?? "")" )
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
dialog.dismiss(animated: true)
}
}
.destructiveButton(title: "Cancel")
.build()
.show()
每当向对话框中添加一个视图时,都会以递增的方式分配一个标签,从1开始。因此,在这种情况下,标题视图的标签为1,用户名文本框为2,密码为3等等。这使得这个库非常灵活,在之前的例子中,活动指示器被添加到对话框中,并在需要时显示和动画化。
要给对话框设置主题有以下两种方法
第一种情况需要用于给出将在应用程序中保留的风格,这是推荐的方法。第二种情况通常是一个非常好的替代方案,当特殊对话框需要不同的主题时。建议不要过度使用此方法,创建不同的风格,使应用在视觉上不一致。
要为主题对话框,有一个专门的结构体
public struct Theme {
let textColor: UIColor
let titleColor: UIColor
let titleFont: UIFont
let textFont: UIFont
let alertBackgroudColor: UIColor
let cornerRadius: CGFloat
let maskViewAlpha: CGFloat
let separatorColor: UIColor
let positiveButton: Button
let destructiveButton: Button
let regularButton: Button
// [...]
public struct Button {
let backgroundColor: UIColor
let selectedBackgroundColor: UIColor
let textColor: UIColor
let font: UIFont
// [...]
}
}
按钮有一个专门的结构体,以确保模块化和避免编写重复的代码,这通常会导致错误。
请随时提出问题或创建pull-requests(在develop
分支上!)!任何类型的建设性贡献都是受欢迎的,例如(感谢Moya提供了这份清单)
EasyDialogs 采用MIT许可证发布。有关更多信息,请参阅License.md。