有人可以帮帮我吗??

让我们从主要信息开始:​​我创建了一个具有2个视图的应用程序,其中一个名为InfoView。此InfoView位于屏幕外,带有以下代码:

(代码隐藏视图)

UIView.animateWithDuration(1.0, delay: 0.3, options: [ ], animations: {self.InfoView.center.x -= self.view.bounds.width + 150}, completion: nil)


应用启动时会自动移动。我将代码隐藏视图放在ViewDidAppear上。

当按下信息按钮时,InfoView从左到右移动到其原始坐标(当我将其放置在故事板上时,x = 12和y = 20,并且Views的大小取决于屏幕的大小)。我使用以下代码将其恢复。

(代码显示视图)

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即可运行。
Ive然后使用以下方法隐藏了视图:

InfoView.Hidden = True


当我运行Show View代码时,它更改为false,而当它隐藏时,其更改为true,依此类推。但是现在当我接到一个电话并且通话结束后,一个人看不到InfoView(很好),尽管如果我按show Info按钮,则InfoView会突然出现在屏幕上,并移出屏幕右侧,无法访问(屏幕外)。

我的问题是有一种方法可以比较InfoView坐标,以便如果它在屏幕上(并且我没有调用它,请运行show View),可以将其发送回屏幕。像if语句一样。例如:

if InfoView == CGPoint(12,20).... //(Then Run Hide View)


(我知道if语句是错误的)而且我确实知道我必须在applicationWillResignActive的应用程序委托中运行该函子。

请有人帮助我,我走上正轨还是有人可以给我其他解决方案。 (告诉我,如果我需要更好地解释)

最佳答案

您应该通过以下方式进行比较。不要与硬编码点进行比较。

if(InfoView.center.x > self.view.bounds.width)
{
    //infoview is hidden
}
else
{
    //infoview is visible
}

09-26 23:38