测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可 | MIT |
发布最后发布 | 2017年11月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✓ |
由 Elvis Nuñez 维护。
我们提供了一个 SearchableCollectionController
,它是 SweetCollectionController
的子类,提供与结合了 UISearchController
的 UITableView
相同的搜索功能。这包括将搜索栏附加到导航栏底部,处理滚动动画并自动处理其定位以确保它永远不会半显示。与原生表格视图行为完全一样。
只需子类化它,重写以下方法,然后就可以正常使用。
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()
}
}
// Before
let cell = tableView.dequeueReusableCell(withIdentifier: "TitleCell", for: indexPath) as! TitleCell
// After
let cell = tableView.dequeue(TitleCell.self, for: indexPath)
// 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
一样简单。
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
}
}
}
let width = self.usernameLabel.width()
// Do something with new width
帮助类方法直接从 nib 文件创建视图。支持重写捆绑包和 nib 名称。接受 4 个可能的参数。Nib 名称、捆绑包、文件所有者和选项。与使用 UINib(nibName:bundle).instantiate(withOwner:options:)
相同。
let myView = MyView.instanceFromNib(nibName: "ViewXibName", bundle: .main)
设置一个视图的顶部、左侧、右侧和底部锚点与 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
}
}
您可以通过提供新的高度、宽度和缩放率来调整图像的大小。
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(255,255,255,1.0)
值创建图像。
UIColor(r: 200, b: 120, c: 255)
UIColor(r: 200, b: 120, c: 25, 0.5)
let window = self.applicationWindow()
这个键盘感知辅助视图是您视图(控制器)的一部分,并随着键盘移动。
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