Вместо создания двух UIImageViews
, кажется логичным просто изменить image
одно представление. Если я это сделаю, есть ли в любом случае распад / перекрёстное растворение между двумя изображениями, а не мгновенное переключение?
ios
objective-c
swift
cocoa-touch
uiimageview
Джош Кахане
источник
источник
Ответы:
Изменить: есть лучшее решение из @algal ниже .
Другой способ сделать это - использовать предопределенные переходы CAAnimation:
См. Пример проекта View Transitions от Apple: https://developer.apple.com/library/content/samplecode/ViewTransitions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007411
источник
Это может быть намного проще, используя новые блочные
UIKit animation
методы.Предположим, что следующий код находится в контроллере представления, и UIImageView, который вы хотите перекрестно растворить, является подпредставлением self.view, адресуемым через свойство.
self.imageView
Тогда все, что вам нужно:Готово.
И сделать это в Swift, это так:
Свифт 3, 4 и 5
источник
Для Swift 3.0.1:
Ссылка: https://gist.github.com/licvido/bc22343cacfa3a8ccf88
источник
Да, то, что вы говорите, абсолютно правильно, и это способ сделать это. Я написал этот метод и всегда использую его, чтобы исчезнуть в моем изображении. Я имею дело с
CALayer
этим. Для этого вам нужно импортировать Core Animation.Вы можете сделать наоборот для Fade out изображения. После того, как это исчезает. Вы просто удаляете его из суперпредставления (что есть
UIImageView
).[imageView removeFromSuperview]
,источник
Вы также можете упаковать функцию появления в подклассе, чтобы затем использовать ее в качестве общего UIImageView, как в следующем примере:
Возможная реализация следует.
Примечание: способ, которым вы на самом деле реализуете постепенное появление в
setImage:
функции, может измениться, и это может быть одним из других превосходных примеров, описанных в других ответах на этот вопрос - создание дополнительного «на лету»,UIImageView
как я делаю здесь, может быть недопустимым в вашей конкретной ситуации .IMMFadeImageView.h :
IMMFadeImageView.m :
Приведенный выше код основан на нескольких допущениях (включая включение ARC в вашем проекте XCode), он предназначен только для подтверждения концепции, и в интересах ясности и направленности остается актуальным, опуская важный не связанный код. Пожалуйста, не копируйте это вслепую.
источник
Мне нужно, чтобы переход повторялся до бесконечности. Для этого потребовалось много проб и ошибок, но я, наконец, получил конечный результат, который искал. Это фрагменты кода для добавления анимации изображения в UIImageView в UITableViewCell.
Вот соответствующий код:
источник
После игры
UIView.transition()
с.transitionCrossDissolve
опцией и получения проблем с опцией (я пытался анимировать изменения изображений внутри одного UIImageView, и переход происходил мгновенно без анимации), я обнаружил, что вам просто нужно добавить еще одну опцию, которая позволяет вам изменять свойства анимации внутри представления ( Swift 4.2 ):Кроме того: если у вас есть какие-либо подпредставления в вашем imageView, они также будут перерисованы и могут помешать анимации. Например, у меня было подпредставление с размытием на моем imageView, и в этом случае анимация не работает. Поэтому я просто изменил свою иерархию представлений и переместил размытие в его собственное представление и поместил его поверх imageView.
источник
Это я думаю самый короткий способ сделать это. Создайте анимацию UIView и передайте ее в свой imageView.
источник
Используя
highlightedImage
свойство, это можно сделать немного проще. Вот пример в Swift 3. Сначала установите нормальное и подсвеченное изображение:И когда вы хотите переключиться между анимированными:
источник