0

我正在寻找为以下属性分配一些值,但是对于我不断返回的错误有一个非常复杂的时间。

override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]! {
    var padding:CGFloat = 100.0
    rect.size.height = 3              <=1
    rect.origin.y -= padding          <=2
    return self.animator.itemsInRect(rect)
}

1 = 不能赋值给这个表达式的结果

2 = 无法使用类型为“(CGFloat,@value CGFloat)”的参数列表调用“-=”

我试过用 CGFloat 包装属性,例如但是没有运气

rect.size.height += CGFloat(3*padding); 

这是一个运行良好的 Objective -C 版本:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
    CGFloat padding = 100.0;
    rect.size.height += 3*padding;        
    rect.origin.y -= padding;            
    return [_animator itemsInRect:rect];
}

我怎样才能快速验证此代码而不会出错?

4

1 回答 1

4

添加var到您的rect. 它目前是只读的:

override func layoutAttributesForElementsInRect(var rect: CGRect) -> [AnyObject]! {

你也可以只创建你想要的矩形:

override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]! {
    let padding:CGFloat = 100.0
    return self.animator.itemsinRect(CGRectMake(rect.origin.x, 
                                                rect.origin.y - padding,
                                                rect.size.width,
                                                rect.size.height + 3 * padding))
}
于 2014-08-28T14:14:45.597 回答