我正在尝试实现一个动画,该动画根据 ScrollView 偏移量缩放 ImageView (我在 spotify 和其他一些应用程序中看到过类似的东西)。我该怎么办?我试过类似的东西:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (Scroll.contentOffset.y<-10 && Scroll.contentOffset.y>-20) {
[UIView animateWithDuration:0.1
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
ImageView.transform=CGAffineTransformMakeScale(1.1, 1.1);
}
completion:^(BOOL finished){
}];
}
if (Scroll.contentOffset.y<-20 && Scroll.contentOffset.y>-30) {
[UIView animateWithDuration:0.1
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
ImageView.transform=CGAffineTransformMakeScale(1.2, 1.2);
}
completion:^(BOOL finished){
}];
}
}
依此类推,直到值为 1.6 。自然这种方法效果不佳,它被调用了很多次并且在视觉上它抖动......我想达到这个结果: 用户向下滚动 ScrollView ,同时将放置在背景中的 ImageView 缩放到任意值(以及当用户返回向上滚动时的相反行为)。什么是正确的做法?
最佳答案
尝试根据 contentOffset 设置变换而不使用动画,例如
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat scale = 1;
if(Scroll.contentOffset.y<0){
scale -= Scroll.contentOffset.y/10; //calculate the scale factor as you like
}
ImageView.transform = CGAffineTransformMakeScale(scale,scale);
}
关于ios - 我如何制作链接到 uiscrollview contentoffest 的 uiimageView 缩放动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176668/