Cancel UIview.animation with user interaction
We have a horizontal animation like such:
UIView.animate(
withDuration: 400.millisecond,
delay: 600.milliseconds,
options: [.autoreverse, .beginFromCurrentState, .allowUserInteraction],
animations: {
UIView.setAnimationRepeatCount(5)
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: -30, ty: 0)
}, completion: { _ in
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0)
})
We are doing so that the entire view content moved to the left a little bit (repeating twice) as an indication to the users that they can interact with our horizontal carousel (built with collection view).
However though, is there a way to cancel this animation if the user has interacted with the view?
There is a similar question asked: UIView animations canceling any touch input?. But it is not the same. What we are interested in is not only allowing user interaction but also cancel the animation immediately since we know that the user understands the UI already.
ios
add a comment |
We have a horizontal animation like such:
UIView.animate(
withDuration: 400.millisecond,
delay: 600.milliseconds,
options: [.autoreverse, .beginFromCurrentState, .allowUserInteraction],
animations: {
UIView.setAnimationRepeatCount(5)
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: -30, ty: 0)
}, completion: { _ in
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0)
})
We are doing so that the entire view content moved to the left a little bit (repeating twice) as an indication to the users that they can interact with our horizontal carousel (built with collection view).
However though, is there a way to cancel this animation if the user has interacted with the view?
There is a similar question asked: UIView animations canceling any touch input?. But it is not the same. What we are interested in is not only allowing user interaction but also cancel the animation immediately since we know that the user understands the UI already.
ios
1
UseUIViewPropertyAnimator
.. then you can set the value back to 0 to reverse the animation if you want.. Depends how you define cancel.. Does it just stop completely? Does it go back to how it was, etc.. In any case,UIViewPropertyAnimator
should be the way to go imo..
– Brandon
Nov 22 at 18:33
add a comment |
We have a horizontal animation like such:
UIView.animate(
withDuration: 400.millisecond,
delay: 600.milliseconds,
options: [.autoreverse, .beginFromCurrentState, .allowUserInteraction],
animations: {
UIView.setAnimationRepeatCount(5)
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: -30, ty: 0)
}, completion: { _ in
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0)
})
We are doing so that the entire view content moved to the left a little bit (repeating twice) as an indication to the users that they can interact with our horizontal carousel (built with collection view).
However though, is there a way to cancel this animation if the user has interacted with the view?
There is a similar question asked: UIView animations canceling any touch input?. But it is not the same. What we are interested in is not only allowing user interaction but also cancel the animation immediately since we know that the user understands the UI already.
ios
We have a horizontal animation like such:
UIView.animate(
withDuration: 400.millisecond,
delay: 600.milliseconds,
options: [.autoreverse, .beginFromCurrentState, .allowUserInteraction],
animations: {
UIView.setAnimationRepeatCount(5)
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: -30, ty: 0)
}, completion: { _ in
self.collectionView.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0)
})
We are doing so that the entire view content moved to the left a little bit (repeating twice) as an indication to the users that they can interact with our horizontal carousel (built with collection view).
However though, is there a way to cancel this animation if the user has interacted with the view?
There is a similar question asked: UIView animations canceling any touch input?. But it is not the same. What we are interested in is not only allowing user interaction but also cancel the animation immediately since we know that the user understands the UI already.
ios
ios
asked Nov 22 at 17:53
Yuchen Zhong
11.5k779125
11.5k779125
1
UseUIViewPropertyAnimator
.. then you can set the value back to 0 to reverse the animation if you want.. Depends how you define cancel.. Does it just stop completely? Does it go back to how it was, etc.. In any case,UIViewPropertyAnimator
should be the way to go imo..
– Brandon
Nov 22 at 18:33
add a comment |
1
UseUIViewPropertyAnimator
.. then you can set the value back to 0 to reverse the animation if you want.. Depends how you define cancel.. Does it just stop completely? Does it go back to how it was, etc.. In any case,UIViewPropertyAnimator
should be the way to go imo..
– Brandon
Nov 22 at 18:33
1
1
Use
UIViewPropertyAnimator
.. then you can set the value back to 0 to reverse the animation if you want.. Depends how you define cancel.. Does it just stop completely? Does it go back to how it was, etc.. In any case, UIViewPropertyAnimator
should be the way to go imo..– Brandon
Nov 22 at 18:33
Use
UIViewPropertyAnimator
.. then you can set the value back to 0 to reverse the animation if you want.. Depends how you define cancel.. Does it just stop completely? Does it go back to how it was, etc.. In any case, UIViewPropertyAnimator
should be the way to go imo..– Brandon
Nov 22 at 18:33
add a comment |
1 Answer
1
active
oldest
votes
If just cancel animation, just terminate all animations like this:
self.collectionView.layer.removeAllAnimations()
It's not pausing but to run completion block.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436131%2fcancel-uiview-animation-with-user-interaction%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If just cancel animation, just terminate all animations like this:
self.collectionView.layer.removeAllAnimations()
It's not pausing but to run completion block.
add a comment |
If just cancel animation, just terminate all animations like this:
self.collectionView.layer.removeAllAnimations()
It's not pausing but to run completion block.
add a comment |
If just cancel animation, just terminate all animations like this:
self.collectionView.layer.removeAllAnimations()
It's not pausing but to run completion block.
If just cancel animation, just terminate all animations like this:
self.collectionView.layer.removeAllAnimations()
It's not pausing but to run completion block.
edited Nov 22 at 18:46
answered Nov 22 at 18:20
E.Coms
1,5102412
1,5102412
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436131%2fcancel-uiview-animation-with-user-interaction%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Use
UIViewPropertyAnimator
.. then you can set the value back to 0 to reverse the animation if you want.. Depends how you define cancel.. Does it just stop completely? Does it go back to how it was, etc.. In any case,UIViewPropertyAnimator
should be the way to go imo..– Brandon
Nov 22 at 18:33