我想在应用两个动画中的一个之前进行选择,
我的想法是:点one
,如果我的myImageView
位于点one
,则应用animationNo1
,否则应用animationNo2
,但我得到了这个:“使用了需要标量的结构类型值”,在第if (myImageView.layer.position = one)
行
我做什么?我怎样才能解决这个问题? 有谁知道究竟是什么导致问题发生?
CGPoint one = CGPointMake(myImageView.layer.position.x, 100);
if (myImageView.layer.position = one)
{
animationNo1
}
else
{
animationNo2
}
答案 0 :(得分:4)
首先,你的if语句不符合你的想法。如果你想比较你必须使用的东西==(即2 =)
你无法比较像这样的CGPoints。
使用
if (CGPointEqualToPoint(one, self.view.layer.position))
答案 1 :(得分:2)
if (myImageView.layer.position = one) { animationNo1 }
应该是
if (CGPointIsEqualToPoint(myImageView.layer.position, one)) { animationNo1 }
您使用单个=含义赋值,而不是==进行比较。但无论如何,==都不会做你想做的事。
答案 2 :(得分:1)
您正在传递一个struct(int this case position)而不是一个标量。要做你想做的事,你需要使用CGPointIsEqualToPoint:
if (CGPointEqualToPoint(one, self.view.layer.position))
包含更正的完整代码:
CGPoint one = CGPointMake(myImageView.layer.position.x, 100);
if (CGPointEqualToPoint(one, self.view.layer.position))
{
animationNo1
}
else
{
animationNo2
}
另外,正如其他人指出的那样:小心= vs ==。它们是不同的。在这种情况下,幸运的是你不使用==进行比较,但是如果你使用=来代替其他东西,它会使它成为真,而不是检查它是否为真。