有人可以帮助我吗?
让我们从主要信息开始:我创建了一个具有2个视图的应用程序,其中一个名为InfoView。此InfoView位于屏幕外,其代码如下:
(代码隐藏视图)
UIView.animateWithDuration(1.0, delay: 0.3, options: [ ], animations: {self.InfoView.center.x -= self.view.bounds.width + 150}, completion: nil)
应用启动时自动移动。我在ViewDidAppear上放置了代码隐藏视图。
当按下Info按钮时,InfoView从左到右缓和到原始坐标,(我将它放在故事板上,x = 12,y = 20,视图大小取决于屏幕大小)。我使用以下代码将其恢复。
(代码显示视图)
UIView.animateWithDuration(1.0, delay: 0.0, options: [ ], animations: {self.InfoView.center.x += self.view.bounds.width + 150}, completion: nil)
InfoView有一个按钮,按下后再次隐藏视图(代码隐藏视图),使其关闭屏幕。
我的问题是,当我试用该应用程序时,如果Iphone接到电话(电话或短信等),则在通话结束后,它会在屏幕上显示InfoView,而无需按Show View Code运行。 然后我用以下方式隐藏了视图:
InfoView.Hidden = True
当我运行Show View代码时,它变为false,当它隐藏时,它变为true,依此类推。然而,现在当我接到一个电话并且在通话结束后我看不到InfoView(这很好)虽然如果我按下显示信息按钮,InfoView将突然出现在屏幕上并缓和屏幕的右侧,使得它无法到达(屏幕外)。
我的问题是有一种比较InfoView坐标的方法,这样如果它在屏幕上(我没有调用它,运行show View),它可以在屏幕外发回。就像if语句一样。比如:
if InfoView == CGPoint(12,20).... //(Then Run Hide View)
(我知道if语句是错误的)我确实理解我必须在applicationWillResignActive中的app delegate中运行该func。
请有人帮助我,我是在正确的轨道上还是有人可以给我另一种解决方案。 (告诉我如果我需要更好地解释它)
答案 0 :(得分:0)
您应该通过以下方式进行比较。不要与硬编码点进行联合。
if(InfoView.center.x > self.view.bounds.width)
{
//infoview is hidden
}
else
{
//infoview is visible
}