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)
min
和max
function由标准库定义。
如果你正在使用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 }