检测标签何时出现在 SWIFT 的屏幕上

Posted

技术标签:

【中文标题】检测标签何时出现在 SWIFT 的屏幕上【英文标题】:Detect when label appears on screen in SWIFT 【发布时间】:2014-12-27 18:09:20 【问题描述】:

我有一个包含多个元素(文本视图、标签、图像视图...)的滚动视图,当我滚动时我的标签出现在屏幕上时,我需要显示一个 uiview。

我该怎么办?

【问题讨论】:

【参考方案1】:

确保您的视图控制器是滚动视图委托。实现scrollViewDidScroll方法,检查scroll view的frame,偏移了contentOffset,是否和label的frame重叠。

func scrollViewDidScroll(scrollView: UIScrollView) 
    let offset = self.scrollView.contentOffset
    let onScreen = CGRectOffset(self.scrollView.frame, offset.x, offset.y)
    if CGRectIntersectsRect(onScreen, self.label.frame) 
        NSLog("Overlap")
    

如果您想检测标签何时完全显示在屏幕上,请使用CGRectContainsRect 而不是CGRectIntersectsRect

【讨论】:

以上是关于检测标签何时出现在 SWIFT 的屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Swift - 检测屏幕上颜色的触摸

从 api 获取数据时出现空白屏幕

检测系统警报视图何时出现/将关闭

使用 swift 4 退出应用程序并返回主屏幕

在 Swift 3 中检测 iOS9 和 iOS10 上的屏幕锁定或主页按钮按下

检测 UISearchController 何时出现在 iOS 11 的导航项中