如何检查 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.heightscrollView.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 = selfclass ViewController : UIViewController, UIScrollViewDelegate

以上是关于如何检查 UIScrollView 内容是不是不需要使用滚动的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView - 检测layoutSubviews中的滚动与方向变化?

UIScrollView 是不是有一个特殊的内容视图来使滚动成为可能?

检查 UView 是不是在 Self.View 范围内

如何在旋转或调整大小时通过中间中心部分而不是左上角来维护 UIScrollView 的 contentOffset?

如何在ios中检查滚动视图是不是在底部滚动[重复]

方向更改时的 UIScrollview 内容大小