我在使用以下方法时遇到了一些错误:
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
}
答案 0 :(得分:69)
1:你不能从Int转向CGFloat。您必须使用Int作为输入来初始化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
答案 1 :(得分:8)
如果您正在使用Swift 3,现在会在序列(即集合)上调用max()
和min()
,而不是传入参数:
let heights = [5, 6]
let max = heights.max() // -> 6
let min = heights.min() // -> 5
答案 2 :(得分:3)
您需要将cellCount
显式转换为CGFloat
,因为Swift不会在整数和浮点数之间进行自动类型转换:
return screenHeight / CGFloat(cellCount)
min
和max
函数由标准库定义。
答案 3 :(得分:2)
你可以使用min()和max() - 它们是内置的。
如果你想推出自己的(为什么? - 也许扩展它),你会使用像
这样的东西func myMin <T : Comparable> (a: T, b: T) -> T {
if a > b {
return b
}
return a
}