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

我遇到了一些错误,使用下面的方法:

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 } 

1:不能从Int到CGFloat。 您必须用Int作为input初始化一个CGFloat。

 return CGFloat(screenHeight) / CGFloat(cellCount) 

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

 func min<T : Comparable>(x: T, y: T, rest: T...) -> T func max<T : Comparable>(x: T, y: T, rest: T...) -> T 

用法如下。

 let lower = min(17, 42) // 17 let upper = max(17, 42) // 42 

您需要显式地将cellCount转换为CGFloat ,因为Swift不会在整数和浮点数之间进行自动types转换:

 return screenHeight / CGFloat(cellCount) 

minmaxfunction由标准库定义。

如果你正在使用Swift 3,现在在序列(即集合)上调用max()min() ,而不是传入参数:

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

你可以使用min()和max() – 它们是内置的。

如果你想推出自己的(为什么? – 也许要扩展它),你会使用类似的东西

 func myMin <T : Comparable> (a: T, b: T) -> T { if a > b { return b } return a }