【问题标题】:Assigning CGRect Expression to CGFloat - Swift将 CGRect 表达式分配给 CGFloat - Swift
【发布时间】:2014-08-28 14:07:16
【问题描述】:

我希望为以下属性分配一些值,但是由于我不断返回的错误,我的时间非常复杂。

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];
}

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

【问题讨论】:

    标签: ios objective-c swift expression cgfloat


    【解决方案1】:

    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-07-29
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 2016-07-17
      • 2012-12-19
      • 2013-07-04
      相关资源
      最近更新 更多