-2

我正在关注一个教程,我对这行代码有点困惑......

sideView.frame = CGRectMake(gesture.direction == UISwipeGestureRecognizerDirectionRight ? -swipedCell.frame.size.width : swipedCell.frame.size.width, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);

是什么gesture.direction == UISwipeGestureRecognizerDirectionRight ? -swipedCell.frame.size.width :意思?

在我的经验中,我从未见过它。==该语句中的and? -和是什么:意思?或者你能解释一下整个事情吗?如果我左右滑动,这会使框架变成什么?

非常感谢。

4

3 回答 3

1

这是一个简短的 if 语句,可以写成:

if (gesture.direction == UISwipeGestureRecognizerDirectionRight) {
    sideView.frame = CGRectMake(-swipedCell.frame.size.width, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);
} else {
    sideView.frame = CGRectMake(swipedCell.frame.size.width, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);
}

==只是标准的等价检查。?是一个短格式 if 运算符的开头,由:.


正如 rmaddy 指出的那样,严格来说,上面的内容并不是这样,它更像是:

CGFloat x;

if (gesture.direction == UISwipeGestureRecognizerDirectionRight) {
    x = -swipedCell.frame.size.width;
} else {
    x = swipedCell.frame.size.width;
}

sideView.frame = CGRectMake(x, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);
于 2013-06-19T16:29:22.040 回答
1

条件中的问号 (?) 称为三元运算符。

前 ?运算符,语句显示条件。后 ?运算符,第一个选择表示条件的满足,第二个表示条件的暴力。所以,基本上它是 if-else 的缩写形式。

if (gesture.direction == UISwipeGestureRecognizerDirectionRight)
{
    sideView.frame = CGRectMake(-swipedCell.frame.size.width, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);
}
else
{
    sideView.frame = CGRectMake(swipedCell.frame.size.width, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);
}
于 2013-06-19T16:29:31.510 回答
-3

CGRectMake 的签名是 CGRectMake(x, y, width, height);

在这种情况下,如果您向右滑动(通过给出负 x 值来实现),sideView 将向左移动并被隐藏。

于 2013-06-19T16:31:15.393 回答