Только для давания Вам общее представление о скорости я выполнил четыре версии этого:
Они все быстры в мелких масштабах, таким образом, у меня были они, каждый создает список 1 000 000 чисел. Вот времена в секундах:
И не, тот последний не является опечаткой. Таким образом, если Вы заботитесь о скорости, и для чисел нормально быть целыми числами от 0 до того, чем, тогда был мой точный код:
a = (0...1000000).sort_by{rand}
При изменении размера вложенного представления вызовите [[собственный супервизор] setNeedsLayout]
. В вашем супервизоре реализуйте -layoutSubviews
, чтобы сделать фактический макет. Придется все рассчитывать самостоятельно. Фиксированные / гибкие поля важны для изменения размера супервизора, а не для одноранговых представлений. По умолчанию -layoutSubviews
вообще ничего не делает; он просто вызывается в подходящее время.
Если вам нужно принудительно выполнить макет в определенной точке, вы можете вызвать -layoutIfNeeded
для себя или своего супервизора. Прочтите документацию о том, как работает этот метод. Вообще говоря, вам не нужно это называть. Обычно он вызывается в подходящее время, если вы просто используете -setNeedsLayout
.