ParallaxHeader
将视差头部简单添加到 UIScrollView 或其子类中。
一个图像视图 | 带图像的滑块 | 模糊鲜艳的文本 | 模糊圆形图标 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
这里
在此处试用内容
需求
- iOS 8.0+
- Xcode 8.0+
- Swift 3.0+
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
$ gem install cocoapods
CocoaPods 1.1.0+ 是构建 Reusable 1.0.0+ 所必需的。
要使用 CocoaPods 将 Reusable 集成到您的 Xcode 项目中,请将其指定在您的 Podfile
中
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target '<Your Target Name>' do
pod 'ParallaxHeader', '~> 2.0.0'
end
然后,运行以下命令
$ pod install
Cocoapods 版本
- Swift4
pod 'ParallaxHeader', '~> 2.0.0'
- Swift3
pod 'ParallaxHeader', '~> 1.0.6'
用法
要将视差头部添加到滚动视图(表格视图),您只需要创建视图并将其设置到您的滚动视图(表格视图)中。
用例 - 单张图像视图
//create view as header view
let imageView = UIImageView()
imageView.image = UIImage(named: "1")
imageView.contentMode = .scaleAspectFill
tableView.parallaxHeader.view = imageView
tableView.parallaxHeader.height = 400
tableView.parallaxHeader.minimumHeight = 0
tableView.parallaxHeader.mode = .topFill
用例 - 图片滑块
let parallaxHeight: CGFloat = view.frame.height - 64 - 49 - sliderHeight
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
collectionParallaxView = UICollectionView(
frame: CGRect(x: 0, y: 0, width: view.frame.width, height: parallaxHeight),
collectionViewLayout: layout
)
collectionParallaxView.isPagingEnabled = true
collectionParallaxView.showsHorizontalScrollIndicator = false
collectionParallaxView.backgroundColor = UIColor.white
collectionParallaxView.delegate = self
collectionParallaxView.dataSource = self
//adding view as parallax header to table view is straightforward
tableView.parallaxHeader.view = collectionParallaxView
tableView.parallaxHeader.height = parallaxHeight
tableView.parallaxHeader.minimumHeight = 0
tableView.parallaxHeader.mode = .centerFill
tableView.parallaxHeader.parallaxHeaderDidScrollHandler = { parallaxHeader in
print(parallaxHeader.progress)
}
用例 - 模糊鲜艳文本
let imageView = UIImageView()
imageView.image = UIImage(named: "profile")
imageView.contentMode = .scaleAspectFill
//setup blur vibrant view
imageView.blurView.setup(style: UIBlurEffectStyle.dark, alpha: 1).enable()
headerImageView = imageView
tableView.parallaxHeader.view = imageView
tableView.parallaxHeader.height = 400
tableView.parallaxHeader.minimumHeight = 40
tableView.parallaxHeader.mode = .centerFill
tableView.parallaxHeader.parallaxHeaderDidScrollHandler = { parallaxHeader in
//update alpha of blur view on top of image view
parallaxHeader.view.blurView.alpha = 1 - parallaxHeader.progress
}
// Label for vibrant text
let vibrantLabel = UILabel()
vibrantLabel.text = "Vibrant"
vibrantLabel.font = UIFont.systemFont(ofSize: 40.0)
vibrantLabel.sizeToFit()
vibrantLabel.textAlignment = .center
imageView.blurView.vibrancyContentView?.addSubview(vibrantLabel)
//add constraints using SnapKit library
vibrantLabel.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
用户案例 - 模糊圆形图标
let image = UIImage(named: "profile")
let imageView = UIImageView()
imageView.image = image
imageView.contentMode = .scaleAspectFill
parallaxHeaderView = imageView
//setup bur view
imageView.blurView.setup(style: UIBlurEffectStyle.dark, alpha: 1).enable()
tableView.parallaxHeader.view = imageView
tableView.parallaxHeader.height = 400
tableView.parallaxHeader.minimumHeight = 120
tableView.parallaxHeader.mode = .centerFill
tableView.parallaxHeader.parallaxHeaderDidScrollHandler = { parallaxHeader in
//update alpha of blur view on top of image view
parallaxHeader.view.blurView.alpha = 1 - parallaxHeader.progress
}
let roundIcon = UIImageView(
frame: CGRect(x: 0, y: 0, width: 100, height: 100)
)
roundIcon.image = image
roundIcon.layer.borderColor = UIColor.white.cgColor
roundIcon.layer.borderWidth = 2
roundIcon.layer.cornerRadius = roundIcon.frame.width / 2
roundIcon.clipsToBounds = true
//add round image view to blur content view
//do not use vibrancyContentView to prevent vibrant effect
imageView.blurView.blurContentView?.addSubview(roundIcon)
//add constraints using SnpaKit library
roundIcon.snp.makeConstraints { make in
make.center.equalToSuperview()
make.width.height.equalTo(100)
}
作者
Roman Sorochak - iOS 开发者 - [email protected]
许可
ParallaxHeader 库在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。