CUITools
个人用途的常用UI工具
目录
- AlertView
- Bulletint
- ErrorView
- Notification
- FlashView
- ImageViewerExtension
- LoadingButton
- LoadingImageView
- LoadingView
- MSView
- SelectController
- SelectImage
- 样式
AlertView
通知用户刚刚发生的操作。
用法
let alertViewProvider = AlertViewProvider(title: String, detail: String, actionTitle: String, type: FlashViewType)
bulletinProvider.present(in: myViewController)
公告
显示带有操作和取消按钮的消息,适合通知用户发生了需要执行操作或取消的情况
用法
let bulletinProvider = BulletinProvider(title: String, detail: String, image: UIImage? = nil, actionTitle: String?, cancelTitle: String?)
bulletinProvider.delegate = self
bulletinProvider.present(in: myViewController)
bulletinProvider.dismiss() // will dismiss the controller
// delegate
func bulletin(actionClicked provider: BulletinAlertProvider)
func bulletin(cancelClicked provider: BulletinAlertProvider)
错误视图
显示错误信息的简单视图,适用于网络断开时使用,在MSTableViewController中用作显示错误视图
let errorView = ErrorView(message: String, image: UIImage?)
// add to msView or subView of UIViewController
通知
通知允许您在窗口顶部显示消息一段时间
用法
let notificationProvider = NotificationProvider(text: "this is a simple notification", type: .sucess)
// will show the notification in the top most window
notificationProvider.presentInWindow()
// will show the notification in the current controller
notificationProvider.present(in: myViewController)
闪现视图
闪现视图显示一个动态视图,可以是成功、错误或自定义视图,可以在调用显示方法之前配置 animationDuration
和 edgeInsets
用法
let flashProvider = FlashProvider(type: FlashViewType)
flashProvider.present()
ImageViewerExtension
从ImageViewerExtension
扩展UIViewController
类,然后调用以下方法
presentImage(image: UIImage)
,该方法会显示包含提供的图像的图库
LoadingButton
用于显示可以转换为加载状态的按钮的视图。
重要提示:最好不设置高度和宽度约束,因为加载动画依赖于内在内容大小
let loadingButton = LoadingButton(title: String, type: LoadingButtonType)
LoadingImageView
该扩展使UIImageView能够异步加载URL。图像随后会调整大小并缩小到边界大小。
imageView.url = "http://test.com/image.jpg"
imageView.cornerToBounds = true // set the radius accordning to bounds
imageView.defaultImage = my_playholder_img // set image for when the UIImageView is empty
LoadingView
显示加载指示器。不需要设置宽度和高度约束,因为提供了内在内容大小。
let loadingView = LoadingView(type: LoadingViewType, color: LoadingViewColorType)
LoadingViewType.normal // size is 40
LoadingViewType.small // size is 25
LoadingViewColorType.default // #CCCCCC
LoadingViewColorType.accent // the accent
LoadingViewColorType.white // #FFFFFF
MSView & MSViewController
该视图允许通过淡入淡出过渡显示多个视图。
let msView = MSView()
msView.animationDuration = 0.5 // duration of animation, default: 0.15
msView.currentView // returns the current visible view
msView.animate(to: nextView)
class MyMSViewControler: MSViewController {
override viewDidLoad() {
super.viewDidLoad()
animate(to: nextView)
}
}
SelectController
允许用户从提供的视图中选择一个或多个项。
选择选项
用户只能选择一个选项
let provider = SelectOptionProvider<Int>(headerTitle: String? = nil, cancelTitle: String)
provider.appendItem(title: "first option", value: 1)
provider.insertItem(title: "second option", value: 2, at: 1)
provider.present(in: myViewController)
provider.onResult { result in
switch result {
case .cancel: break
case .value(let value): // value is same type as T
print(value)
}
选择器
用户可以从选择器视图中选择一个或多个值
let provider = SelectOptionProvider<Int>(headerTitle: String? = nil, cancelTitle: String)
provider.addItem("one", value: 1, component: 0)
provider.addItem("two", value: 2, component: 0)
provider.addItem("three", value: 3, component: 0)
provider.present(in: myViewController)
provider.onResult { result in
switch result {
case .cancel: break
case .value(let value):
// array containing dictionary [Component: Valye]
let valueForComponent = value[0]
}
}
选择控制器
扩展视图控制器以实现SelectImageProtocol
,然后实现以下方法
func imageSelectionSucceed(images: [UIImage])
- 调用
selectImageController
并传递config
的func imageSelectionCanceled()
以调用presentSelectImage(config)
let config = SelectImageConfig()
config.selectionCount = 1 //default
config.sourceType: DKImagePickerControllerSourceType = .both // default, means both camera and gallery
config.showCancelButton = true // default
self.presentSelectImage(config: config)
样式
全局样式
已知错误和限制
- 在BulletinAlert中不能更改图像的大小
- ErrorView没有操作
作者
mohsenShakiba, [邮箱地址被遮蔽]
许可
CUITools可根据MIT许可获得。有关更多信息,请参阅LICENSE文件。