JeraUtils 0.3.7

JeraUtils 0.3.7

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2016年10月
SPM支持 SPM

Atomic AvocadoAlessandro Nakamuta 维护。



 
依赖项
Cartography~> 0.7
ChameleonFramework/Swift~> 2.1
FontAwesome.swift~> 0.7
Kingfisher~> 2.4
Material~> 1.41
Moya-ObjectMapper/RxSwift~> 1.3
Moya/RxSwift= 7.0.0
ReachabilitySwift~> 2.3
RxCocoa~> 2.5
TZStackView= 1.2.0
HMSegmentedControl~> 1.5
INSPullToRefresh~> 1.1
MMDrawerController~> 0.6
NSStringMask~> 1.2
SpinKit~> 1.2
TPKeyboardAvoiding~> 1.3
 

JeraUtils 0.3.7

  • 作者
  • Alessandro Nakamuta

Jera Utils: The Basic Toolset

JeraUtils

Jera Utils 是一个 Pod,包含了我们在大多数应用程序中使用的所有基本工具。

它仍在开发测试中,所以如果您不是 Jera 团队成员,请自行承担风险使用它。

使用方法

首先,将 JeraUtils 导入到您的类中

import JeraUtils

JeraBaseViewController

为了使用此类及其方法,您的控制器必须继承自 JeraBaseViewController。我们建议创建自己的 Base V.C,继承自 JeraUtils,以便您可以根据项目进行调整。

class BaseViewController: JeraBaseViewController { }
子视图

BaseViewController 默认有以下子视图:[scrollView, tableView, collectionView, stackView],它们创建在Insets (0,0,0,0)处。如果想在控制器中使用 tableView,只需将其填充到变量中,处理它是否为 null,然后返回您正在使用的视图。

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.separatorStyle = .None
    tableView.registerNib(R.nib.aboutHeaderCell)    
    tableView.dataSource = self
    tableView.delegate = self
}

请注意,您打算使用的视图的代理必须由您的控制器实现。

方法

addCloseButton()

将关闭选项添加到导航控制器中,在点击时调用关闭函数

self.addCloseButton()
close()

当以模态打开时,它将关闭 viewController,否则它将将其弹出。

self.close()
isModal()

返回控制器是否作为模态打开。

if self.isModal() {
    print("This ViewController is opened as a Modal")
}
listenKeyboard()

监听键盘显示或隐藏的行为,并据此调整视图。

self.listenKeyboard()

警报

AlertManager拥有一个静态变量sharedManager,必须使用它来调用其方法。

警报(title: String?, message: String?, alertOptions: [AlertOption]?, hasCancel:Bool, preferredStyle: UIAlertControllerStyle, presenterViewController: UIViewController)

在屏幕上创建一个警报并显示。

  • 参数title:警报视图顶部的标题。
  • 参数message:在警报视图中显示的消息。
  • 参数alertOptions:包含标题和样式的AlertOption数组。
  • 参数hasCancle:布尔值,表示是否有取消选项。
  • 参数preferredStyle:AlertController将使用的样式。
  • 参数presenterViewController:将要显示警报的控制器。
  • 返回:Observable AlertManagerOption
AlertManager.sharedManager.alert(title: "WARNING", message: "Execute order 66", options: ["OK"], hasCancel: true, preferredStyle: .Alert, presenterViewController: self).subscribeNext({ [weak self]  (option) -> Void in
    if let strongSelf = self {
        switch option {
        case .Button:
            self.executeOrder66()
        default:
            self.cancelOrder66()
        }
    }
}).addDisposableTo(disposeBag)
error(errorType: ErrorType, preferredStyle: UIAlertControllerStyle, presenterViewController: UIViewController)

在屏幕上创建一个错误警报并显示。

  • 参数errorType:您希望警报用户注意的错误类型。
  • 参数preferredStyle:AlertController将使用的样式。
  • 参数presenterViewController:将要显示错误警报的控制器。
  • 返回:Observable AlertManagerOption
AlertManager.sharedManager.error(error, presenterViewController: self).subscribeNext({ [weak self]  (option) -> Void in
    if let strongSelf = self {
        switch option {
        case .Retry:
            strongSelf.retry()
        default:
            break
        }
    }
}).addDisposableTo(strongSelf.alertDisposeBag)

WebView

一个包含顶部进度条的WKWebView扩展。其变量“progress”可以接受一个颜色。

let webView = JeraWebView()
webView.progressView.tintColor = UIColor.redColor()

下拉刷新

PullToRefresh类是一个ScrollView辅助器,具有以下两个方法。

addPullToRefreshToScrollView(scrollView: UIScrollView, handler: (UIScrollView!) -> Void)

给ScrollView添加下拉刷新功能。

  • 参数scrollView:你想在其中添加下拉刷新功能的ScrollView。
  • 参数handler:每次下拉刷新时执行代码块的块。
PullToRefreshHelper.addPullToRefreshToScrollView(myTableView) { [weak self]  (myTableView) -> Void in
    self?.refreshMyTableView()
}
addInfinityScrollRefreshView(scrollView: UIScrollView, handler: (UIScrollView!) -> Void)

给ScrollView添加分页功能。

  • 参数scrollView:你想在其中添加分页功能的ScrollView。
  • 参数handler:每次下拉刷新时执行代码块的块。
PullToRefreshHelper.addInfinityScrollRefreshView(myTableView) { [weak self]  (myTableView) -> Void in
    self?.loadNextPage()
}

HUDManager

showCustomView(customView: UIView, dismissAfter: Double, userInteractionEnabled: Bool, customLayout: ((containerView: UIView, customView: UIView) -> ())? = nil)

显示自定义视图弹窗

  • 参数customView:要显示的视图。如果有其他HUD正在显示,此视图将在其他视图消失后显示
  • 参数dismissAfter:视图消失前要经过的秒数。如果为nil,消失应由你的代码处理。
  • 参数 userInteractionEnabled:用户是否可以与视图交互。默认设置为 true。
  • 参数 customLayout:一个包含自定义容器视图和自定义视图(它们之间的约束和布局已经设置)的块。默认情况下,它将在屏幕中间进行布局。
HudManager.showCustomView(myCustomView)
dismissHudView(hudView: UIView)

关闭由 HUDManager 显示或即将显示的视图。

  • 参数 hudView:要关闭的视图
HudManager.dismissHudView(myCustomView)
func showToastWithText(text: String, dismissAfter: Double) -> HudToast

以吐司形式显示文本 HUDView。

  • 参数 text:在吐司视图中显示的文本。
  • 参数 dismissAfter:吐司的持续时间(秒)。默认持续时间为 3.5 秒。
  • 返回值:返回吐司视图。
HudManager.showToastWithText(text: "Execute order 66", dismissAfter: 10)

消息

showLoadingText(text: String, color: UIColor, type: LoadingViewType, contentView: UIView, messagePosition: BaseViewControllerMessagePosition, contentBlocked: Bool)

显示一个动画加载消息。

  • 参数 text:在加载消息中显示的文本。
  • 参数 color:要显示的文本颜色。
  • 参数 type:loadingView 的类型。接收一个 LoadingViewType,可以是动画指南针或 RTSpinKitViewStyle。默认情况下,LoadingViewType 设置为 RTSpinKitViewStyle.StyleThreeBounce。
  • 参数 contentView:将显示加载消息的视图。默认情况下,该消息将显示在调用它的 ViewController 的视图中。
  • 参数 messagePosition:一个用于布局加载消息的位置。默认情况下,它将在视图中居中布局。
  • 参数 contentBlocked:一个布尔值,表示是否阻止用户与加载消息交互。默认设置为 false。
myViewController.showLoadingText("Loading position...", type: .Compass)
showMessageText(text: String, color: UIColor, messageType: MessageViewType, contentView: UIView, messagePosition: BaseViewControllerMessagePosition, contentBlocked: Bool, reloadBlock: (()->Void))

在视图中显示消息。其主要目的是显示连接问题消息。该消息通常会包含一个重试按钮。

  • 参数 text:要显示为消息的文本。
  • 参数 color:要显示的文本颜色。
  • 参数 messageType:消息的类型。有关详细信息,请参阅 MessageViewType 枚举。
  • 参数 contentView:将显示消息的视图。默认情况下,该消息将在调用它的 ViewController 的视图中显示。
  • 参数 messagePosition:一个用于布局加载消息的位置。默认情况下,它将在视图中居中布局。
  • 参数 contentBlocked:一个布尔值,表示是否阻止用户与加载消息交互。默认设置为 false。
  • 参数 reloadBlock:当重试按钮被点击时要执行的代码块。
myViewController.showMessageText(translateMoyaError(error).localizedDescription, messageType: .ConnectionError, reloadBlock: { [weak self]  () -> Void in
    self?.reloadMyView()
})

JeraPushNotificationHelper

变量

  • sharedInstance // JeraPushNotificationHelper 的共享实例。每当从这个类调用方法时,都应该使用此实例。
  • deviceToken // 一个字符串,应接收用户的手机 Token。此令牌通常在 AppDelegate 中获取,并应在每次获取时将其保存到此变量中。
showNotification()

在用户使用应用时显示接收到的推送通知。

  • 参数 notification:包含推送信息的 NSDictionary。
registerDeviceToken(deviceTokenData: NSData)

将设备 Token 的 NSData 转换为 String 并将其分配给 deviceToken 变量

  • 参数 deviceTokenData:要分配的设备 Token 的 NSData。
deviceTokenDataToString(deviceToken: NSData)

将 Device Token 作为 NSData 转换为 String

  • 参数 deviceToken:要转换的 NSData
  • 返回:作为 String 的 Device Token
registerForRemoteNotifications()

请求权限并注册用户以接收具有声音、警报和徽章的远程通知。

Reachability

它是一个辅助工具,可以轻松地使用 Reachability 检查连接状态。

sharedReachability

这个静态变量将尝试启动互联网连接的可用性检查,并在无法做到时在控制台记录。应在其调用 reachability 方法时使用。

ReachabilityHelper.sharedReachabilty.isReachable()
reachabilityChangedObservable()

使用响应式编程来观察连接状态的所有变化。

  • 返回:可观察的 Reachability 状态。
ReachabilityHelper.reachabilityChangedObservable().subscribeNext { [weak self]  (reachability) -> Void in    
  switch reachability.currentReachabilityStatus {
  case .ReachableViaWiFi:
      self?.request()
  case .ReachableViaWWAN:
      break
  case .NotReachable:
      break
  }
}.addDisposableTo(disposeBag)

MoyaHelper

# translateMoyaError(errorType: ErrorType)

处理 Moya 返回的错误并返回正确的 NSError

  • 参数 errorType:Moya 返回的错误
  • 返回:与 Moya 错误相对应的 NSError。swift HudManager.showToastWithText(translateMoyaError(error).localizedDescription, dismissAfter: 15.0)

TransformTypes

一组类,用于将 API 发送的变量从一种类型转换为期望的类型,并在需要将数据发送回 API 时将其转换回 API 需要的类型。TransformTypes 中的所有以下类都有两个方法

//Transforms the type sent by the API into the type you expect.
transformFromJSON()
//Transformms the type you have back into the type expected by the API
transformToJSON()
class IntStringTransform: TransformType

当 API 向你发送 Int 并预期为 String 时使用

class StringIntTransform: TransformType

当 API 向你发送 String 并预期为 Int 时使用。

class CPFTransform: TransformType

当 API 将 CPF 作为 Int 发送并预期为 String 时使用。

class DoubleStringTransform: TransformType

当 API 向你发送 Double 并预期为 String 时使用。

类 StringEmptySafeTransform: TransformType

在API发送空字符串而期望接收Null对象时使用。

类 BoolTransform: TransformType

在API发送您1或0,而您期望分别是True或False时使用。

类 URLTransform: TransformType

在API以不寻常的格式发送您一个URL字符串时使用。然后尝试以多种方式从接收到的字符串中制作一个可用的URL。

类 MilisecondsTimeStampTransform: TransformType

当API发送自1970年以来的毫秒日期给您,而您期望的是NSDate时使用。

类 BaseDateTransform: TransformType

当API发送日期字符串而您期望的是NSDate时使用。它有3个扩展,分别对应以下日期格式

  • ShortDateTransform : yyyy-MM-dd
  • GMTLongDateTransform : yyyy-MM-dd HH:mm:ss
  • LongDateTransform : yyyy-MM-dd HH:mm:ss zzzz

错误报告

任何错误都可以通过向我们的git仓库提交pull request或通过电子邮件发送到[email protected][email protected]报告。

致谢

JeraUtils由Jera拥有并维护。您可以在Twitter上关注我们@jerasoftware,在Facebook上关注Jera

许可

JeraUtils采用MIT许可证发布。详细信息请参阅LICENSE。