0

我试图用触摸事件移动CALayer。但是有错误信息。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    // get touched point
    CGPoint pt = [[touches anyObject] locationInView:self];
    [self.layer convertPoint:pt toLayer:self.layer.superlayer];

    // move piece to the point
    piece.bounds.origin = pt; <- "Expression is not assignable" 
    }
}

我一直在寻找这个问题的解决方案,并得出这是Objective -C对象结构的问题。但我无法得到解决方案。

谢谢你的好心。

4

1 回答 1

2

是的,不能赋值。UIViews 和它的子类也是如此。

我们不能设置一个CALayer.bounds.originCALayer.bounds.size属性。我们可以做的是创建 aCGRect并将其分配给CALayer.boundsor CALayer.frame

所以,像:

// Use frame, not bounds:
piece.frame = CGRectMake(pt.x, pt.y, piece.frame.size.width, piece.frame.size.height); <- "Expression is assignable"
于 2012-08-08T13:10:00.117 回答