Я считаю ItemSize для каждой ячейки исходя из размера картинки в sizeForItemAt и расстояния между ячейками у меня 0, настройка imageview стоит по размеру ячейки констрейтами, рсположение изображения - scaleAspectFit, так как мне нужно уместить всё изображение по ширине, а высоту соответсвенно изменять для каждой ячейки динамически. Наверное дело в подсчете высоты колонок collectionview. Сейчас получается что колонки одинаковой высоты потому что каждый ряд имеет одинаковую высоту ячеек - равняется по бОльшей высоте ячейки- от этого и получаются пробелы между картинками.