测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最近发布 | 2016年9月 |
SPM支持SPM | ✗ |
由Taiki Suzuki维护。
依赖 | |
SABlurImageView | >= 0 |
MisterFusion | >= 0 |
SAParallaxViewControllerSwift通过模糊效果实现了视差滚动。此外,它还实现了无缝打开过渡。
将SAParallaxViewControllerSwift目录添加到您的项目中。
如果通过cocoapods安装,您必须使用import SAParallaxViewControllerSwift
。
按以下方式扩展SAParallaxViewController
。
class ViewController: SAParallaxViewController {
override init() {
super.init()
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
如果要使用UICollectionViewDataSource
,则实现扩展如下。您可以使用cell.setImage()
设置图片。您可以在cell.containerView.accessoryView
中添加一些UIView成员类。
extension ViewController: UICollectionViewDataSource {
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = super.collectionView(collectionView, cellForItemAt: indexPath) as! SAParallaxViewCell
let index = indexPath.row % 6
let imageName = String(format: "image%d", index + 1)
if let image = UIImage(named: imageName) {
cell.setImage(image)
}
let title = ["Girl with Room", "Beautiful sky", "Music Festival", "Fashion show", "Beautiful beach", "Pizza and beer"]
let label = UILabel(frame: cell.containerView.accessoryView.bounds)
label.textAlignment = .Center
label.text = title[index]
label.textColor = .whiteColor()
label.font = .systemFontOfSize(30)
cell.containerView.accessoryView.addSubview(label)
return cell
}
}
如果要使用UICollectionViewDelegate
,则实现扩展如下。
您必须将cell.containerView
复制到viewController.trantisionContainerView
中,因为要使用打开过渡。在复制时,请使用containerView.setViews(cells: cells, view: view)
。将viewController.transitioningDelegate
设置为self,最终调用self.presentViewController()
。
extension ViewController: UICollectionViewDelegate {
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
super.collectionView(collectionView, didSelectItemAt: indexPath)
guard let cells = collectionView.visibleCells as? [SAParallaxViewCell] else { return }
let containerView = SATransitionContainerView(frame: view.bounds)
containerView.setViews(cells, view: view)
let viewController = DetailViewController()
viewController.transitioningDelegate = self
viewController.trantisionContainerView = containerView
present(viewController, animated: true, completion: nil)
}
}
按以下方式扩展SADetailViewController
。
SADetailViewController
是视差单元格的详细视控制器。
class DetailViewController: SADetailViewController {
override init() {
super.init()
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
您可以使用cell.containerView
的函数更改视差起始位置。
func setParallaxStartPosition(#y: CGFloat)
您可以更改cell.containerView.accessoryView
的高度。
func setAccessoryViewHeight(height: CGFloat)
您可以更改cell.containerView.accessoryView
的模糊大小。
func setBlurSize(size: CGFloat)
您可以更改cell.containerView.accessoryView
的模糊颜色。
func setBlurColor(color: UIColor)
您可以更改cell.containerView.accessoryView
的模糊颜色透明度。
func setBlurColorAlpha(alpha: CGFloat)
Taiki Suzuki,[email protected]
SAParallaxViewControllerSwift遵循MIT许可。有关更多信息,请参阅LICENSE文件。