rap*_*ael 3 scale uiscrollview ios autolayout swift
我怎么能简单地缩小imageView与autolayout向下滚动时?
尝试看看视差效果,但不完全是我想要的.
我只想使用a scrollView和一个ImageView可以调整大小的标题取决于scrollView位置.
rap*_*ael 19
一步步:
1 - 打开故事板并使用这些约束在顶部添加图像视图(选择宽高比):
2 - 为您的uiimage选择aspectFill模式和clipSubviews
3 - 在viewController顶部添加一个UIScrollView,里面有一个子视图.有关使用scrollView的自动布局的所有详细信息:http://natashatherobot.com/ios-autolayout-scrollview/
4 - 然后在代码中创建imageView和scrollView的出口引用.
5 - 在viewDidLoad中,插入self.automaticallyAdjustsScrollViewInsets = false并设置scrollView的contentInsets和contentOffset:
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.automaticallyAdjustsScrollViewInsets = false
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let imageHeight = imageView.frame.height
let newOrigin = CGPoint(x: 0, y: -imageHeight)
scrollView.contentOffset = newOrigin
scrollView.contentInset = UIEdgeInsets(top: imageHeight, left: 0, bottom: 0, right: 0)
}
}
Run Code Online (Sandbox Code Playgroud)
6 - 将scrollviewDelegate添加到ViewController和scrollViewDidScroll方法以获取scrollView的位置
class ViewController: UIViewController, UIScrollViewDelegate
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
self.automaticallyAdjustsScrollViewInsets = false
}
func scrollViewDidScroll(scrollView: UIScrollView) {
let offsetY = scrollView.contentOffset.y
if offsetY < 0
{
imageView.frame.size.height = -offsetY
}
else
{
imageView.frame.size.height = imageView.frame.height
}
}
Run Code Online (Sandbox Code Playgroud)
7 - 然后构建并运行.
你可以在github上下载例子:https: //github.com/raphrel/scalingImageWhenScrollDown
可能有更好的解决方案,但这个有效.请享用
| 归档时间: |
|
| 查看次数: |
6522 次 |
| 最近记录: |