2014-08-28 2 views
0

Я ищу, чтобы назначить ниже атрибуты с некоторыми значениями, однако с очень сложным временем с ошибками, которые я все время возвращаю.Назначение выражения CGRect для CGFloat - 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); 

Это Objective -C версия, которая работает отлично:

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

Как я быстроногий римент этого кода без ошибок?

ответ

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