Хобрук: Ваш путь к мастерству в программировании

Swift: полноэкранный UIImageView не работает

Используя Swift, я хочу щелкнуть изображение меньшего размера, которое затем расширяется до полноэкранного режима устройства и снова щелкает, чтобы вернуться к размеру по умолчанию, который был раньше.

Это код, который у меня есть, но при нажатии он не расширяется до полноэкранного режима, а расширяется до ширины просмотра.

У меня есть всплывающее окно UIView поверх моего основного представления, которое отображается как всплывающее окно, и изображение расширяется до этого всплывающего представления, но не на весь экран.

Перед нажатием кнопки imageView изображение1

После нажатия imageVjew изображение

Как мне добиться полного экрана моего изображения?

@IBOutlet var backgroundView: UIView!
@IBOutlet weak var popUpView: UIView!
@IBOutlet weak var iconImage: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
    iconImage.addGestureRecognizer(tapGesture)

}

@IBAction func handleTap(_ gesutureRecognizer: UITapGestureRecognizer) {

    let screenSize = UIScreen.main.bounds
    let screenWidth = screenSize.width
    let screenHeight = screenSize.height
    iconImage.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight)
}

  • подвид будет связан с привязкой супервизора, если непосредственный супервизор не является полноэкранным, то как можно подвид? 02.10.2017
  • Почему handleTap(_:) является @IBAction, если вы создаете его в коде? Измените @IBAction на @objc и посмотрите, изменится ли это. 02.10.2017
  • попробуйте вызвать layoutIfNeeded() на iconImage после того, как вы измените его фрейм 02.10.2017
  • Какой режим содержимого вы используете для просмотра изображений? Масштаб для заполнения? Аспектное заполнение? Аспект подходит? 02.10.2017
  • Даже если вы решите эту проблему (я уверен, что вы решите, мне это не кажется сложным), imageView будет менять свой кадр без анимации, это не лучший пользовательский опыт. Попробуйте изменить анимацию кадра iconImage - вы можете сделать это, изменив ограничения автомакета или анимировав кадр напрямую. 02.10.2017
  • @риши что? всплывающее окно меньше, чем backgroundView. 02.10.2017
  • @BradleyMackey в этом нет никакой разницы 02.10.2017
  • @DonMag Aspect Fit, но он находится в пределах всплывающего окна, поэтому он не на весь экран 02.10.2017
  • @TNguyen что такое layoutIfNeeded? 02.10.2017
  • @BroSimple заставляет представление обновлять свой макет, если есть какие-либо ожидающие обновления 02.10.2017
  • @TNguyen просто ошибка, такой функции не существует 02.10.2017
  • @BroSimple, это странно, ты сделал iconImage.layoutIfNeeded()? 02.10.2017
  • @TNguyen ничего не изменилось, изображение по-прежнему застревает в пределах всплывающего окна. 02.10.2017
  • вместо UIScreen.main.bounds вы можете попробовать self.view.bounds или self.view.frame (это при условии, что вид контроллера занимает весь экран) 02.10.2017
  • @TNguyen, я пробовал все это, включая self.backgroundView.bounds/frame, и ничего. Все еще в пределах всплывающего окна. backgroundView занимает весь экран, у меня есть еще один вид поверх него, который намного меньше. 02.10.2017
  • Можете ли вы поделиться с нами своим взглядом на иерархию / изображение ваших элементов раскадровки? 02.10.2017
  • @TNguyen Я добавил свой вид экрана в пост 02.10.2017
  • проблема может заключаться в том, как установлены ограничения. Установите вид, чтобы он не обрезал границы, и убедитесь, что у вас нет ограничения на width = height, иначе он изменит размер высоты, чтобы он был шириной представления (возможно, вы не настроили его таким образом, но это просто моя интуиция, видящая так как это значок, который, скорее всего, всегда хотел бы быть квадратным) 02.10.2017
  • @TNguyen единственные ограничения, которые у меня есть, - это всплывающее окно, а не изображениеView, повлияет ли это на него? 02.10.2017
  • у вас вообще нет ограничений на imageView? 02.10.2017
  • @TNguyen никаких ограничений на imageView, только всплывающее окно 02.10.2017
  • Давайте продолжим обсуждение в чате. 02.10.2017

Ответы:


1

Вы можете следовать логике этого руководства, но вместо создания UIViewController для «всплывающего окна» вы можете создать UIViewController с imageView в полноэкранном режиме.

https://www.youtube.com/watch?v=FgCIRMz_3dE&t=430s

02.10.2017
  • Да, это правда, я могу просто создать еще один контроллер представления, чтобы имитировать полноэкранный режим для изображения. Я думал, что есть более простой способ 02.10.2017
  • Новые материалы

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..