Вы должны были остаться с 1 / 10
, избегая приведения.Изменение этого значения на CGFloat(1/10)
фактически создает другую проблему, говоря компилятору: «эй, хотя это параметр CGFloat
, я действительно хочу, чтобы вы делали целочисленную математику из 1
, деленную на 10
(что равно нулю!), Изатем приведите это к CGFloat
. ”
Итак, вы можете придерживаться 1 / 10
, и поскольку этот параметр равен CGFloat
, он будет правильно выполнять математические операции с плавающей запятой.Реальная проблема заключается в том, что вы просто умножали view.frame
раз 1 / 10
, а не view.frame.height
:
scrollView.contentSize = CGSize(width: view.frame.width,
height: view.frame.height + (view.frame.height * 1 / 10 * CGFloat(UIImage.count)))
Я не знаю, что делать с этой ссылкой UIImage.count
, поэтомуЯ оставил все как есть, но это явно не так.
Хотя вышеприведенное работает отлично, но большинство из нас, исходя из других языков, явно указали бы числа как числа с плавающей запятой, скажем ... * 1.0 / 10.0
или просто ... * 0.1
или что-то еще, чтобы сделать это полностьюоднозначно, что мы не хотим, чтобы она выполняла какие-либо целочисленные вычисления:
scrollView.contentSize = CGSize(width: view.frame.width,
height: view.frame.height + (view.frame.height / 10.0 * CGFloat(UIImage.count)))
В данном конкретном примере это полностью эквивалентно тому, что описано выше, но использование 10.0
вместо 10
делаетабсолютно ясно, что мы хотим сделать математику с плавающей точкой.