Swift中的MIN()和MAX()并将Int转换为CGFloat

fuz*_*uzz 48 objective-c ios swift

我用以下方法得到了一些错误:

1)我如何return screenHeight / cellCount作为CGFLoat第一种方法?

2)如何在第二种方法中使用等效的ObjC的MIN()和MAX()?

func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
    var cellCount = Int(self.tableView.numberOfRowsInSection(indexPath.section))

    return screenHeight / cellCount as CGFloat
}

// #pragma mark - UIScrollViewDelegate

func scrollViewDidScroll(scrollView: UIScrollView) {
    let height = CGFloat(scrollView.bounds.size.height)
    let position = CGFloat(MAX(scrollView.contentOffset.y, 0.0))

    let percent = CGFloat(MIN(position / height, 1.0))
    blurredImageView.alpha = percent
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*lum 71

1:你不能从Int转向CGFloat.您必须使用Int作为输入初始化CGFloat.

return CGFloat(screenHeight) / CGFloat(cellCount)
Run Code Online (Sandbox Code Playgroud)

2:使用标准库定义的最小和最大函数.它们的定义如下:

func min<T : Comparable>(x: T, y: T, rest: T...) -> T
func max<T : Comparable>(x: T, y: T, rest: T...) -> T
Run Code Online (Sandbox Code Playgroud)

用法如下.

let lower = min(17, 42) // 17
let upper = max(17, 42) // 42
Run Code Online (Sandbox Code Playgroud)


Ala*_*ino 9

如果您使用的斯威夫特3,max()min()现在被称为在序列(即集合),而不是传递参数:

let heights = [5, 6] let max = heights.max() // -> 6 let min = heights.min() // -> 5