iOS | Dialog: 一个基于xib的Swift优雅对话框库

要求

  • Xcode 8.3+
  • Swift 3.2+
  • iOS 9.0+

介绍

UIKit中的对话框组件:
  • 一般情况下,系统提供了UIAlertViewUIAlertController两个类,提供了对话框的基本使用,用法比较简单,这里不再赘述;
  • 但系统的alert对话框默认是很难自定义样式的:比如修改文字颜色、圆角大小以及点击背景自动消失等等操作;
Dialog库
  • 本库模仿系统的alert控件,实现了高度的还原(包括动画和UI),以及更友好强大的适配(包括转屏、文本过长、按钮过多等情况下的UI适配);
  • 本库用法更加简洁,基于UIWindow的topViewController,任何地方中均可调用;
  • 高度可定制的UI(按钮颜色、icon、文本对齐位置、对话框的圆角大小等);
  • 支持自定义view/view controller的弹出;
  • 支持图片大图模式;

用法

default默认样式
  • 方法定义
public static func `default`(title: Dialog.Title? = nil,
                                 message: Dialog.Message? = nil,
                                 actions: [Dialog.Action]? = nil,
                                 configuration: Dialog.Configuration = .default)
 {}
  • Dialog.Title
public init(_ text: String?,
                    color: UIColor = Dialog.Configuration.default.primaryColor,
                alignment: NSTextAlignment = .center)
{}
  • Dialog.Message
public init(_ text: String?,
                    attributes: [String: Any] = [:])
{}
  • Dialog.Action
public init(title: String? = nil, icon: UIImage? = nil, style: Action.Style = .default, handler: Handler? = nil)
{}
  • Dialog.Configuration
public class Configuration: NSObject {
        public var cornerRadius: CGFloat = 0 //圆角半径
        public var isBackgroundViewUserInteractionEnabled = false //是否点击背景消失
        public var primaryColor: UIColor = .black //对话框里的元素主色
}
  • 用法示例
Dialog Default

代码见DemoDialogDefaultVC.swift

image大图样式
Dialog.image(UIImage(named: "image"), actions: [
            Dialog.Action(title: "hello1"),
            Dialog.Action(title: "hello1"),
            Dialog.Action(title: "hello1"),
            Dialog.Action(title: "hello1"),
            Dialog.Action(title: "hello1"),
            Dialog.Action(title: "hello1")
])
Dialog Image
custom自定义view样式
// 自定义controller
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ActionCollectionVC") as! ActionCollectionVC
vc.view.frame = CGRect(origin: .zero, size: CGSize(width: view.bounds.width, height: 100))
vc.collectionView?.delegate = self

// 调用
Dialog.custom(vc.view, actions: [
    Dialog.Action(title: "Cancel")
])
Dialog Custom

Carthage

  • 目前该控件库已上传到github上,支持Carthage编译
  • 用法

1.在你的Cartfile中加入
github "BackWorld/Dialog" "master"

2.在终端执行carthage update

3.将Carthage/Build/iOS目录下的Dialog.framework拖到你的项目中

4.在使用的swift文件中import Sheeter即可

Github

https://github.com/BackWorld/Dialog

如果对你有帮助,别忘了点个赞和关注~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本篇是我学习金马课程之赵越分享的学习总结,夹带个人私货,请注意。 刚入币圈韭菜常常浪费时间精力的5个地方,看盘影响...
    幻觉_ae51阅读 204评论 0 1
  • 亲爱的文悦同学,感恩你陪伴我的第38个春天到来,感恩你一路不离不弃、对我的包容、信任、支持、无条件的付出!❤...
    陈文悦阅读 370评论 0 0
  • 上节科学课罗老师给我们留了一个作业-树叶贴画。我们班有48位同学,只有两个同学记住了要做树叶贴画,而其他46个...
    M张皓轩M阅读 408评论 0 0
  • 有个丫头阅读 194评论 0 0