Nano Hash - криптовалюты, майнинг, программирование

Как не анимировать определенные изменения ограничений с помощью layoutIfNeeded() в Swift?

У меня есть UIView, который содержит подвиды. Подвиды анимированы с изменениями ограничений и функцией layoutIfNeeded():

for i in 1...cardViews.count - 1 {
    let currentCard = cardViews[i]
    let previousCard = cardViews[i-1]

    // Set new offset
    currentCard.topConstraint?.constant = previousCard.contentView.frame.height + configuration.expandedOffset
}

// To animate constraints's changes
UIView.animate(withDuration: TimeInterval(duration), delay: 0, options: [.curveEaseOut], animations: {
    self.layoutIfNeeded()
}, completion: nil)

Но когда я это делаю, это также анимирует изменения родителя. Что-то вроде этого :

self.Height == containerView.Height

Как я могу вызвать layoutIfNeeded() для анимации моих подпредставлений, но не родителя?

РЕДАКТИРОВАТЬ: Побочный эффект: http://gph.is/2noI3w9


  • Попробуйте вручную вызвать parent.layoutIfNeeded непосредственно перед размещением self в блоке анимации. Это заставит родителя макетировать без анимации до того, как self будет макетировать с анимацией. 13.03.2017
  • Когда я делаю parent.layoutIfNeeded(), он анимирует все его подвиды. 14.03.2017
  • Как насчет того, чтобы вызвать его перед обновлением ограничений? 14.03.2017
  • Не работает... :( Я думаю, это потому, что ограничение, которое я не хочу анимировать, является динамическим и зависит от ограничений подвидов 14.03.2017
  • Если ограничение родителя зависит от ограничений дочерних элементов, почему вы не хотите, чтобы они анимировались вместе? Мне кажется, что эффект будет неприятным, если один анимируется, а другой нет. 14.03.2017
  • Я добавил GIF, чтобы объяснить мою проблему 14.03.2017

Ответы:


1

Вы можете вызвать это внутри своего UIView.animate

for i in 1...cardViews.count - 1 {
    let currentCard = cardViews[i]
    currentCard.layoutIfNeeded()
}

Вместо

self.layoutIfNeeded()
13.03.2017
  • Вы добавили layoutIfNeeded() внутри UIView.animate? @Буду 14.03.2017
  • @Will, если это не тот ответ, который вы ищете, объясните, что вы имеете в виду под «Это нарушает анимацию». 14.03.2017
  • Когда я говорю Broke, это означает, что это не анимация. Я добавил GIF к моему вопросу, чтобы быть более явным 14.03.2017
  • Давайте продолжим это обсуждение в чате. 14.03.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..