如何检查 UIScrollView 内容是不是不需要使用滚动
Posted
技术标签:
【中文标题】如何检查 UIScrollView 内容是不是不需要使用滚动【英文标题】:how to check if UIScrollView content doesn't need to use scroll如何检查 UIScrollView 内容是否不需要使用滚动 【发布时间】:2020-02-20 10:23:16 【问题描述】:我的问题是,如果滚动视图的内容并非全部可见,我需要更改滚动视图下方的标签文本颜色。
例如:我有一个红色的标签,如果滚动视图的所有内容都可以在屏幕上看到(根本不使用滚动),如果所有的标签都是蓝色的我的滚动视图中的内容不可见。如何以编程方式进行?
注意:我有一个 contentView -> scrollView(以编程方式)-> stackView(以编程方式)。 (scrollview内的stackview和contentview内的scrollview。以及内容视图下方的标签)
谢谢。
【问题讨论】:
假设您正在向滚动视图动态添加元素(例如可变数量的按钮),您可以将scrollView.contentSize.height
与scrollView.frame.size.height
进行比较...但仅在自动布局完成它的工作之后。那么何时(在您的代码中)添加元素并想要检查滚动需求?
【参考方案1】:
1:获取scrollView的内容视图的高度
let totalHeight = scrollView.contentSize.height
2:在 viewDidLoad 检查:
if totalHeight > scrollView.frame.size.height
// can scroll more
else
// full content visible
3:一旦用户开始滚动,你可以调用:
func scrollViewDidScroll(_ scrollView: UIScrollView)
if (scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height))
//reached to bottom
else
// can scroll more
【讨论】:
嗨,它不起作用 : 按钮可能是 4 个或多个,如果 4 我不必滚动查看全部,但更多例如 7 到 30,我必须滚动。我需要更改标签颜色取决于我的滚动视图是否需要滚动。谢谢 还需要设置scrollVIew.delegate = self
和class ViewController : UIViewController, UIScrollViewDelegate
以上是关于如何检查 UIScrollView 内容是不是不需要使用滚动的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView - 检测layoutSubviews中的滚动与方向变化?
UIScrollView 是不是有一个特殊的内容视图来使滚动成为可能?