MIN () et MAX () dans Swift et en convertissant Int en CGFloat

Je reçois des erreurs avec les méthodes suivantes:

1) Comment return screenHeight / cellCount tant que CGFLoat pour la première méthode?

2) Comment utiliser l’équivalent d’ObjC MIN () et MAX () dans la seconde méthode?

 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: Vous ne pouvez pas baisser de Int vers CGFloat. Vous devez initialiser un CGFloat avec l’Int comme entrée.

 return CGFloat(screenHeight) / CGFloat(cellCount) 

2: Utilisez les fonctions min et max définies par la bibliothèque standard. Ils sont définis comme suit:

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

L’utilisation est la suivante.

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

Si vous utilisez Swift 3, max() et min() sont maintenant appelés sur la séquence (c.-à-d. Collection) au lieu de transmettre les arguments:

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

Vous devez convertir explicitement cellCount en CGFloat , car Swift ne fait pas de conversion de type automatique entre les entiers et les flottants:

 return screenHeight / CGFloat(cellCount) 

min et max sont définies par la bibliothèque standard.

Vous pouvez simplement utiliser min () et max () – ils sont intégrés.

Si vous vouliez rouler vous-même (pourquoi? – peut-être pour l’étendre), vous utiliseriez quelque chose comme:

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