2016-01-23 3 views
0

Я с iOS 9 (Swift), показывающий набор из восьми изображений в представлении, и я добавил противопоставления, чтобы установить положение imageViews.Изменение UIImage во время выполнения влияет на недостающие ограничения

Каждый ImageView загружает изображение из файла активов, который был установлен вручную для каждого из них в доске объявлений.

Все работает отлично, теперь я хочу, чтобы установить случайный ресурс во время выполнения на imageViews ...

var images = ["T","B","J","R","R2","I","M","RL"] 
var randomImages = images 
var indexCount = UInt32(images.count) 

for imageView in TopImages{ 
    let index:Int = Int(arc4random_uniform(indexCount)) 
    imageView.image = UIImage(named: randomImages[index]) 
    randomImages.removeAtIndex(index) 
    indexCount -= 1 
} 

Когда этот код запуска, то imageViews находятся в разных положениях, чем я проектировал в раскадровку. .. кажется, что когда я устанавливаю программно ImageView.image = UIImage (...) Я пропускаю ограничения.

Возможно ли изменить имя актива во время выполнения без создания нового экземпляра UIImage? Если это невозможно ... Кто-нибудь знает обходное решение для достижения моей цели по загрузке случайных изображений программно, которые добавляются и позиционируются ранее на доске объявлений?

Спасибо!

+0

Можете ли вы показать нам свои раскадровки и ограничения автоопределения? – ganchito55

+0

Как вы инициализируете представления UIImage? – smnk

+0

Нет, я не инициализирую изображение в коде. Единственный код, который влияет на время выполнения на изображения в этом фрагменте, показанном в сообщении. Если я прокомментирую эту строку: imageView.image = UIImage (named: randomImages [index]) изображения правильно расположены ... –

ответ

0

Автоматическая компоновка использует внутреннее значениеContentSize для каждого представления в сочетании с добавленными ограничениями для расчета макета. Вы можете изменить изображение в imageView во время выполнения, но потом вам нужно вызвать invalidateIntrinsicContentSize в каждом UIImageView, а затем в качестве последнего шага после того, как макет цикла будет помечен в содержащем представлении, чтобы все было пролочено с учетом новых изменений.

+0

Не работая с этими инструкциями, спасибо за информацию, которую я прочитаю о .. –

Смежные вопросы