SweetUIKit 1.13.1

SweetUIKit 1.13.1

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

Elvis Nuñez 维护。



SweetUIKit 1.13.1

SweetUIKit

Version
License
Platform

可搜索的集合视图

我们提供了一个 SearchableCollectionController,它是 SweetCollectionController 的子类,提供与结合了 UISearchControllerUITableView 相同的搜索功能。这包括将搜索栏附加到导航栏底部,处理滚动动画并自动处理其定位以确保它永远不会半显示。与原生表格视图行为完全一样。

实现

只需子类化它,重写以下方法,然后就可以正常使用。

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell

当然,除非您也实现了 UISearchBar 代理方法,否则它不会做很多事情。

以下是一个非常简单的实现示例

extension SearchableCollectionViewController: UISearchBarDelegate {
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        self.searchTerm = searchText
        self.collectionView.reloadData()
    }
}

单元格重用

UITableView

// Before
let cell = tableView.dequeueReusableCell(withIdentifier: "TitleCell", for: indexPath) as! TitleCell

// After
let cell = tableView.dequeue(TitleCell.self, for: indexPath)

UICollectionView

// Before
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CollectionViewCell

// After
let cell = collectionView.dequeue(CollectionViewCell.self, for: indexPath)

注册单元格

简单的协议扩展,用于简化在 UITableViewController 和 UICollectionViewController 中注册单元格。

之前:

self.tableView.registerClass(ItemCell.self, forCellReuseIdentifier: "ItemCell")

之后:

self.tableView.register(ItemCell.self)

此外,访问单元格标识符与使用 ItemCell.reuseIdentifier 一样简单。

UIAlertController

可 dismissed 的提醒

let alertController = UIAlertController.dismissableAlert(title: "Not allowed access", message: "Please contact your admin to get access.")
self.presentViewController(alertController, animated: true, completion: nil)

破坏性确认提醒

let alertController = UIAlertController.destructiveConfirmationAlert(message: "Are you sure you want to log out?", destructiveActionTitle: "Log out") {
    self.controllerDelegate?.settingsControllerDidPressLogoutButton(self)
}
self.presentViewController(alertController, animated: true, completion: nil)

错误提醒

let alertController = UIAlertController.errorAlert(error)
self.presentViewController(alertController, animated: true, completion: nil)

进度提醒

let progressAlert = UIAlertController.progressAlert("Creating album...")
self.presentViewController(progressAlert, animated: true, completion: nil)
self.fetcher.createAlbum(title: self.titleTextField.text, photos: self.selectedPhotos) { error in
    progressAlert.dismissViewControllerAnimated(true) {
        if let error = error {
            let alertController = UIAlertController.errorAlert(error)
            self.presentViewController(alertController, animated: true, completion: nil)
        } else {
            // Success
        }
    }
}

UILabel

计算宽度

let width = self.usernameLabel.width()
// Do something with new width

UIView

Nib 支持

帮助类方法直接从 nib 文件创建视图。支持重写捆绑包和 nib 名称。接受 4 个可能的参数。Nib 名称、捆绑包、文件所有者和选项。与使用 UINib(nibName:bundle).instantiate(withOwner:options:) 相同。

let myView = MyView.instanceFromNib(nibName: "ViewXibName", bundle:  .main)

自动布局

填充 superview

设置一个视图的顶部、左侧、右侧和底部锚点与 superview 相同。接受一个可选的 UIEdgeInsets 参数。值可以是所有正值,用于边距,因为它已经处理了底部和右侧常数的负值。

    view.fillSuperview()
    
    anotherView.fillSuperview(UIEdgeInsets(top: 10, left: 10, bottom: 80, right: 10))

直接设置高度和宽度锚点

    view.set(height: 30.0)
    view.set(width: 50.0)

连接到顶部

非常适合工具栏,将视图连接到 superview 的顶部。不设置高度。如果您传递一个视图控制器,它将连接到 viewController.topLayoutGuide.bottomAnchor 而不是 superview.topAnchor

    toolbar.attachToTop(viewController: self)

摇动

self.fetcher.authenticate(username, password: password) { clientID, clientSecret, accessToken, refreshToken, expiresIn, error in
    if let error = error {
        // Update UI to display error
        self.tableView.shake()
    } else {
      // success
    }
}

UIImage

调整大小

您可以通过提供新的高度、宽度和缩放率来调整图像的大小。

let image = UIImage()
let scaledImage = image.resized(by: 0.5) // CGInterpolationQuality defaults to .medium
let widthImage = image.resized(toWidth: 300) // scales up or down as needed
let heightImage = image.resized(toHeight: 300)

居中框架

let image = UIImage(named: "art.png")!
let frame = image.centeredFrame()
// Do something with new frame

带有颜色的图像

let image = UIImage(color: .red)
button.setBackgroundImage(image, for: .normal)

或者,如果您需要图像具有特定的尺寸

let image = UIImage(color: .red, size: someSize)

从 RGBA 值获取颜色

使用 rgba(255,255,255,1.0) 值创建图像。

    UIColor(r: 200, b: 120, c: 255)
    UIColor(r: 200, b: 120, c: 25, 0.5)

UIViewController

应用程序窗口

let window = self.applicationWindow()

键盘感知辅助视图

这个键盘感知辅助视图是您视图(控制器)的一部分,并随着键盘移动。

KeyboardAwareAccessoryViewDelegate

var keyboardAwareInputView: KeyboardAwareInputAccessoryView { get }
inputView(_:shouldUpdatePosition:)

安装

SweetUIKit 通过 CocoaPods 提供。要安装
只需在 Podfile 中添加以下行:

pod 'SweetUIKit'

SweetUIKit 也支持通过 Carthage。要安装
它,只需在 Cartfile 中添加以下行:

github "UseSweet/SweetUIKit" ~> 1.0

许可

SweetUIKit 采用 MIT 许可。更多详细信息请查看 LICENSE 文件。

作者

Bakken & Bæck,@use_sweet