Действительно ли это допустимо для, в спящем режиме список () для возврата дубликатов?

tl; dr: Угловой радиус не анимативен в animateWithDuration:animations:.


Что говорит документация об анимации вида.

Как показано в разделе в разделе «Анимация» в «Руководстве по программированию для iOS», говорится

Оба UIKit и Core Animation обеспечивают поддержку анимации, но уровень поддержки, предоставляемый каждой технологией, различается. В UIKit анимации выполняются с использованием объектов UIView

blockquote>

Полный список свойств, которые можно анимировать, используя либо старый

[UIView beginAnimations:context:];
[UIView setAnimationDuration:];
// Change properties here...
[UIView commitAnimations];

, либо новый

[UIView animateWithDuration:animations:];

(которые вы используете):

  • frame
  • bounds
  • center
  • transform ( CGAffineTransform, а не CATransform3D)
  • alpha
  • backgroundColor
  • contentStretch

Как вы можете видеть, cornerRadius не в списке.

Некоторая путаница

анимации UIView действительно предназначены только для анимации свойств вида. Что смущает людей, так это то, что вы также можете анимировать те же свойства на слое внутри блока анимации UIView, то есть кадр, границы, положение, непрозрачность, backgroundColor. Поэтому люди видят анимацию слоев внутри animateWithDuration и считают, что они могут анимировать любое свойство вида там.

В этом же разделе говорится:

В тех местах, где вы хотите выполнить более сложные анимации или анимации, не поддерживаемые классом UIView, вы можете использовать Core Animation и базовый слой представления для создания анимации. Поскольку объекты вида и слоя сложным образом связаны друг с другом, изменения на уровне представления влияют на представление.

blockquote>

Несколько строк вниз вы можете прочитать список анимационных свойств Core Animation, где вы видите это:

  • Граница слоя (включая ли углы слоя округлены)
blockquote>

Итак, чтобы оживить cornerRadius, вам нужно использовать Core Animation, как вы уже сказали в своем обновленном вопросе (и ответе). Я просто добавил, что пытался объяснить, почему это так.


Некоторые дополнительные разъяснения

Когда люди читают документацию, в которой говорится, что animateWithDuration - рекомендуемый способ анимации, полагать, что он пытается заменить CABasicAnimation, CAAnimationGroup, CAKeyframeAnimation и т. д., но на самом деле это не так. Его заменили beginAnimations:context: и commitAnimations, которые вы видели выше.

29
задан skaffman 13 October 2009 в 13:25
поделиться

3 ответа

Да, получение дубликатов вполне возможно, если вы построите свои запросы так, чтобы это могло произойти. См., Например, Hibernate CollectionOfElements EAGER извлекать дубликаты элементов

23
ответ дан Community 14 October 2019 в 08:55
поделиться

Если у вас есть объект, у которого есть список подобъектов, и ваши критерии объединяют две таблицы вместе, вы можете получить дубликаты основного объекта.

Один из способов избежать дубликатов - использовать DistinctRootEntityResultTransformer. Основным недостатком этого является использование буферизации набора результатов / подсчета строк. Они не работают вместе.

4
ответ дан Mike 14 October 2019 в 08:55
поделиться

У меня была точно такая же проблема с Criteria API. Простое решение для меня состояло в том, чтобы установить отличный от true в запросе, подобном

CriteriaQuery<Foo> query = criteriaBuilder.createQuery(Foo.class);
query.distinct(true);

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

0
ответ дан hecko84 14 October 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: