UIView Анимационная версия выпуска - PullRequest
0 голосов
/ 21 января 2020

Я получаю эту ошибку:

beginAnimations: context: устарел: первый устарел в iOS 13.0 - Вместо этого используйте API анимации на основе блоков для этих строк.

Я пытаюсь научиться программировать на Swift и немного поработать с каруселями. Может кто-нибудь, пожалуйста, помогите мне изменить эти строки для совместимости с swift 5.

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.1];
[UIView setAnimationDelegate:itemView.superview];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];
[self performSelector:@selector(queueItemView:) withObject:itemView afterDelay:0.1];
itemView.superview.layer.opacity = 0.0;
[UIView commitAnimations];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelay:0.1];
[UIView setAnimationDuration:INSERT_DURATION];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(depthSortViews)];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:INSERT_DURATION];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(didScroll)];
[self transformItemViews];
[UIView commitAnimations];

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Не путайте Swift (язык) с iOS / Какао (каркас). Это не имеет никакого отношения к Swift 5 или любому другому Swift. Ваша проблема здесь в том, что в iOS 13 Какао не нравится тот звонок, который вы делаете.

Вместо (очень) старого синтаксиса beginAnimations / commitAnimations следует использовать UIView.animate(withDuration:...) или UIViewPropertyAnimator .

0 голосов
/ 21 января 2020

CALayer анимации довольно старые сейчас. Чтобы узнать больше о Swifty-способе работы с анимацией, я рекомендую прочитать этот учебник. Но если вам нужен перевод кода, вы можете попробовать использовать Swiftify в качестве инструмента для преобразования базового c кода из Objective- C в Swift. Вы получите следующий результат:

//  Converted to Swift 5.1 by Swiftify v5.1.33915 - https://objectivec2swift.com/
UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDuration(0.1)
UIView.setAnimationDelegate(itemView.superview)
UIView.setAnimationDidStop(#selector(UIView.removeFromSuperview))
perform(#selector(queueItemView(_:)), with: itemView, afterDelay: 0.1)
itemView.superview.layer.opacity = 0.0
UIView.commitAnimations()

UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDelay(0.1)
UIView.setAnimationDuration(INSERT_DURATION)
UIView.setAnimationDelegate(self)
UIView.setAnimationDidStop(#selector(depthSortViews))
UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDuration(INSERT_DURATION)
UIView.setAnimationDelegate(self)
UIView.setAnimationDidStop(#selector(didScroll))
transformItemViews()
UIView.commitAnimations()

Возможно, вам придется немного его исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...