SAParallaxViewControllerSwift 2.0.0

SAParallaxViewControllerSwift 2.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最近发布2016年9月
SPM支持SPM

Taiki Suzuki维护。



 
依赖
SABlurImageView>= 0
MisterFusion>= 0
 

SAParallaxViewControllerSwift通过模糊效果实现了视差滚动。此外,它还实现了无缝打开过渡。

特性

  • [x] 视差滚动
  • [x] 配备模糊视图的视差滚动
  • [x] 无缝打开过渡
  • [x] 支持 Swift2.3
  • [x] 支持 Swift3

安装

手动

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文件。