ImageView 向下滚动时缩放
ImageView Scaling when scrolling down
如何在向下滚动时简单地将 imageView
缩放为 autolayout
?
尝试查看视差效果,但不是我想要的。
我只想使用一个 scrollView
和一个 header ImageView
可以调整大小取决于 scrollView
位置。
一步一步:
1 - 打开故事板并在顶部添加一个图像视图,这些约束(选择您的纵横比):
2 - select 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)
}
}
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
}
}
7 - 然后构建并 运行.
您可以在 github 下载示例:
https://github.com/raphrel/scalingImageWhenScrollDown
也许有更好的解决方案,但这个可行。
享受
如何在向下滚动时简单地将 imageView
缩放为 autolayout
?
尝试查看视差效果,但不是我想要的。
我只想使用一个 scrollView
和一个 header ImageView
可以调整大小取决于 scrollView
位置。
一步一步:
1 - 打开故事板并在顶部添加一个图像视图,这些约束(选择您的纵横比):
2 - select 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)
}
}
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
}
}
7 - 然后构建并 运行.
您可以在 github 下载示例: https://github.com/raphrel/scalingImageWhenScrollDown
也许有更好的解决方案,但这个可行。 享受