控制屏幕上的UIView

时间:2014-03-23 11:08:56

标签: ios objective-c uiview

当用户向左或向右滑动时,我试图控制从屏幕一侧出来的UIView。由于我希望视图跟随用户的手指,我正在使用平移手势。

所有这些工作正常但是代码正在增长,因为我正在寻找滑动速度以及触摸结束或开始获取该信息。我之所以没有使用滑出式导航类型的设置,是因为这个视图必须是UIWindow的一部分,因此它位于我的UITabBar上,而不是它下面。

我遇到的问题是阻止视图移动到某一点。这是我试过的代码:

在平移手势方法中:

if (self.filterView.frame.origin.x <=36){

        gesture.enabled = NO;

    }

然而,正如代码所做的那样;它会禁用手势并向后滑动不再有效。我也尝试过这个:

if (self.filterView.frame.origin.x <=36){

    return; 

}

然而,这意味着当我向后滑动时,没有任何事情发生,因为此代码首先执行以检查位置。

if (self.filterView.frame.origin.x <=36){

     self.filterView.frame = CGRectMake(37, 0, 300, 500);
    return; 
}

这是最接近的匹配 - 但是在重置视图时会出现错误 - 这是正确的,因为代码的作用是正确的。它效率不高,看起来不太好。

解决此问题的更好方法是什么?我只是想让self.filterView不再适合某一点。

1 个答案:

答案 0 :(得分:0)

您想要检查视图是否已经过了点,就像您正在做的那样。然后你想手动保持它。

// this checks if the view's origin along the x-axis has gone less than or equal to 36.0f
if (CGRectGetMinX(self.filterView.frame) <= 36.0f)
{
    CGRect currentFrame = self.filterView.frame;
    currentFrame.x = 37.0f;
    self.filterView.frame = currentFrame;
    return;
}