CGFloat和类型,我如何正确地做数学?

时间:2015-08-21 18:03:07

标签: swift

我正在尝试保留app属性的枚举,如下所示:

import Foundation
import UIKit

public enum AppDimensions:CGFloat {

    case TOP_BAR_HEIGHT             = 183.0
    case PROFILE_IMAGE_HEIGHT       = 200.0
    case TOOLBAR_HEIGHT             = 70.00
    case CATEGORY_TABLE_OFFSET_Y    = 210.00
}

var i:CGFloat = CGFloat(self.view.bounds.height) - CGFloat(AppDimensions.TOOLBAR_HEIGHT)

给我一​​个错误: 二进制运算符' - '不能应用于...

我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:1)

Swift错误消息可能具有挑战性: 创建中间语句以隔离错误:

let toolBarHeight = CGFloat(AppDimensions.TOOLBAR_HEIGHT)
let boundsHeight = CGFloat(self.view.bounds.height)
var i:CGFloat = boundsHeight - toolBarHeight

这会在第一个更有帮助的语句中产生错误:

  

无法使用参数或类型'(AppDimensions)'

调用类型' CGFloat`的初始值设定项

解决方案:

let x = CGFloat(AppDimensions.TOOLBAR_HEIGHT.rawValue)

中级声明是一个调试好友和良好的代码,也是非常好的名字。

答案 1 :(得分:1)

也许你错过了.rawValue?试试这个:

var i:CGFloat = CGFloat(self.view.bounds.height) - CGFloat(AppDimensions.TOOLBAR_HEIGHT.rawValue)