“在.layer.position中使用了需要标量的结构类型值”

时间:2010-10-09 18:25:50

标签: objective-c

我想在应用两个动画中的一个之前进行选择, 我的想法是:点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
 }

3 个答案:

答案 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 ==。它们是不同的。在这种情况下,幸运的是你不使用==进行比较,但是如果你使用=来代替其他东西,它会使它成为真,而不是检查它是否为真。