EasyDialogs 0.9.3

EasyDialogs 0.9.3

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年1月
SwiftSwift 版本3.0
SPM支持 SPM

Junior B.维护。



EasyDialogs

EasyDialogs 是一个受 Android 的 MaterialDialogs 启发的简单库。主要目标是提供一个强大的库,用于在 iOS 项目中创建可高度自定义但简单的警报视图。

目录(核心)

  1. 快速示例
  2. 项目状态
    1. 路线图

  3. 安装
    1. Cocoapods
    2. Carthage
    3. 手动

  4. 新增功能
  5. 用法
    1. 主题化

  6. 贡献
  7. 许可证


快速示例

以下是一个带有两个用于通过用户名和密码验证用户的文本字段的警报视图的快速示例。

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()

Login Regular Custom


项目状态

此项目正在由 @bontoJR 活跃开发,处于非常早期阶段。

路线图

  • [x] 基础构建器
  • [x] 基础样式
  • [x] 基础主题化
  • [x] 文档高级用法
  • [ ] 高级自定义主题化
  • [ ] 炫酷动画
  • [ ] 优雅的过渡加载


安装

使用 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等等。这使得这个库非常灵活,在之前的例子中,活动指示器被添加到对话框中,并在需要时显示和动画化。

主题定制

要给对话框设置主题有以下两种方法

  • 设置默认主题:`EasyDialog.Builder.defaultTheme = myCustomTheme`
  • 在构建对话框时传递主题:`EasyDialog.Builder(self, theme: customTheme)`

第一种情况需要用于给出将在应用程序中保留的风格,这是推荐的方法。第二种情况通常是一个非常好的替代方案,当特殊对话框需要不同的主题时。建议不要过度使用此方法,创建不同的风格,使应用在视觉上不一致。

要为主题对话框,有一个专门的结构体

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提供了这份清单)

  • 寻找(和报告!)错误。
  • 提供新功能的建议。
  • 回答问题。
  • 改进文档。
  • 审查pull请求。
  • 帮助管理问题优先级。
  • 修复错误/新功能。


许可协议

EasyDialogs 采用MIT许可证发布。有关更多信息,请参阅License.md