UIBinder 0.1.4

UIBinder 0.1.4

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

Mohamed Matloub 维护。



UIBinder 0.1.4

  • MohamedMatloub

UIBinder

BuddyBuild

UIBinder 帮助您将对象映射到视图,因此您无需再编写任何代码。

label.text = object.name
textView.text = object.description
textField.text = object.age

UIBinder 会为您完成所有这些。

示例

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install

用法

请查看以下代码片段以获取实现示例,或查看示例项目。

ViewController

self.view.bindSubviewsWith( object)

其中对象是 NSObject 或包含更新当前视图所需值的字典

在 Storyboard 中,您需要为所需视图设置 param,其中在将对象传递给 bindSubviewsWith 时为字典,则 param 是键,如果是 NSObject,则 param 是属性名

然后您就完成了,当您运行代码时,您将发现视图已经更新为您传递给它的对象中的正确值

如果您只想更新某些视图,可以使用

  view.bindTo(object)

TableViewController

您可以使用它来为正确的单元格绑定数组中的每个对象

  cell.bindSubviewsWith(arr[indexPath,row])

UIImageView

首先,我们来说说您需要在 Storyboard 中设置什么

 param

它支持 String 或 UIImage,如果是 UIImage,将设置到 ImageView 中;如果是字符串,则表示它是 URL,UIBinder 将尝试为您下载该图像

 placeHolderImage

代表在图像加载完毕之前将设置的图像

 errorImage

在无法获取在 param 中设置的图像时将设置的图像

 completeUrl

如果您知道包含所需图像的 URL,可以将它传递给 completeUrl

下载方法

现在,在将 URL 的值传递给图像后,无论是使用 completeUrl 还是 param,就需要下载它了

默认

UIBinder依赖于AlamofireImage来下载图片,所以如果你向imageView传入带有图片的url,UIBinder会为你下载图片。

自定义下载

如果你需要自定义下载过程中的任何内容,你可以实现ImageDownloadDelegate并覆盖以下方法:

func downloadImageWith(url: String, onSucces completion: @escaping ((UIImage) -> ()), onError errorCompletion: @escaping     (UIImage, Error) -> ())
  • url:是传递给imageView的url,在paramcompleteUrl中。
  • onsuccess:你将返回要设置为imageView的图片。
  • onError:你将传入要设置为imageView的图片以及要传递给ImageDownloadListener的错误。
ImageDownloadListener

这是一个协议,你需要在实现以下内容后才能得知图片下载成功或下载失败的情况:

   func imageDidDownload(downloadedImage : UIImage)
   func imageFailedToDownloadWith(error : Error)
如何将ImageDownloadListener和ImageDownloadDelegate设置到imageView中

1- 分开设置到每个UIViewController中

  • 在storyBoard中,通过UIImageView的输出来连接它们
  • 在viewController类中
      self.imageView.downloadDelegate = CustomDownloadDelegate()
      self.imageView.downloadListener = CustomDownloadListener()

2 - 在app delegate中对应用中的每个图片进行设置

ImageManager.sharedManager.imageDownloadDelegate = CustomImageDownloader()
ImageManager.sharedManager.imageDownloadListener = CustomImageDownloader()

图片缓存

UIBinder使用AlamofireImage图片缓存

目前支持以下UIView

  • UILabel
  • UITextView
  • UITextField
  • UIImageView

对于其他不受支持的UIView或自定义View,你可以这样做:

extension UITextView{
  
    override public func bindTo(_ object : NSObject){
    // if object is dictionary then you will use  
        if let dic = object as? NSDictionary {
            self.text = self.getStringValueFromDictionary(dic: dic)
            return
        }
        // else first check if param has value not nil then get string represtation of this value
        if  let param : String =   self.param {
            if let value = object.getPropertyValueWith(label :param) {
                if let v = value   as? String {
                    self.text = v
                }else if let text =  object.getPropertyValueWith(label :param) {
                    self.text = String(describing: text)
                }
                
            }
        }
    }
    
   
    
}

要求

安装

UIBinder可通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile:

pod "UIBinder"

作者

MohamedMatloub, [email protected]

许可证

UIBinder适用于MIT许可证。更多信息请参阅LICENSE文件。