2014-08-28 70 views
0

我正在寻找使用某些值分配以下属性,但与我一直收回的错误有一个非常复杂的时间。指定CGFloat的CGRect表达式 - Swift

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); 

这是一个客观-C版本,它工作得很好:

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

我怎样才能迅速-IFY没有错误的代码?

回答

4

var添加到您的声明rect。这是目前只读:

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

你也可以只创建所需的RECT:

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)) 
} 
相关问题