objective-c - 我如何知道 View 是否可见?

标签 objective-c ios xcode cocoa-touch animation

假设我有两个 View Controller :xVC 和 yVC。我使用了 shake API,并使用了方法 -(void)motionBegan-(void)motionEnded:-(void)motionCancelled > 在 xVC 中。发生的情况是,当设备摇晃时,它会发出一个简单的动画。现在的问题是,即使我打开 yVC,即当 yVS.view 已添加为 subview 时,该动画也会被触发。我正在寻找的是一些可以在 -(void)motionEnded: 中使用的 if 条件,如下所示:

if(yVC == nil)
{
     //trigger animation
} 

我的意思是,当 yVC 可见时,抖动不应该起作用。我怎么做?请帮忙。

最佳答案

我见过和使用的一般建议是询问 View 是否具有非零 window 属性:

if( ! yVC.view.window) {
  // trigger animation
}

但请注意,这并不总是等同于可见;尽管在大多数应用程序中,它已经达到了您能获得的最佳性能(不准确的基本情况是不同的 View 完全遮盖了它,但这仍然可以满足您的需求)

关于objective-c - 我如何知道 View 是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498115/

相关文章:

ios - 为什么 Xcode 会显示比 Instruments for SceneKit 应用程序更多的内存使用?

ios - 在Bolts框架中摆脱WebView(解析框架依赖性)

iphone - .pch 中的 Xcode 编译错误? (iOS)

objective-c - 调度队列 : How to tell if they're running and how to stop them

objective-c - 滚动表时向核心数据发出获取请求

php - 快速登录 POST 连接 php

ios - 在 Swift 中获取表格内容的高度

objective-c - 在 iOS 上使用 AVAudioPlayer 需要哪些框架和导入?

ios - 字符串的日期格式

ios - iOS 上的 SQLite 日期函数使用系统时区,即使已设置应用程序的默认时区