gpt4 book ai didi

ios - uiview 动画在动画过程中添加加速

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:50 27 4
gpt4 key购买 nike

我正在使用如下动画在 ios 中处理选取框文本:

第一种方式:

-(void)startScrolling {
CGRect rect ;
rect = self.titleView.frame;
rect.origin.x = -self.titleView.frame.size.width;
self.titleView.frame = rect;
[UIView beginAnimations:@"" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:13];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(startScrolling)];

// Update end position
CGRect rect ;
rect = self.titleView.frame;
rect.origin.x = [[UIScreen mainScreen] bounds].size.width;
self.titleView.frame = rect;
[UIView commitAnimations];

}

第二种方式:

      [UIView animateWithDuration:13
delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{
CGRect rect ;
rect = self.titleView.frame;
rect.origin.x = -self.titleView.frame.size.width;
self.titleView.frame = rect;

}
completion:^(BOOL finished) {
CGRect rect ;
rect = self.titleView.frame;
rect.origin.x = [[UIScreen mainScreen] bounds].size.width;
self.titleView.frame = rect;
[self startScrolling];
}
];

第一种方法是正常工作。第二种方式的问题是在动画过程中添加了加速。不懂

为什么在使用block的时候加了加速度。通过互联网搜索,但我仍然卡住了。对这个问题有什么想法吗?

最佳答案

您发布的两个代码示例并不等同;您的设置代码应该在动画 block 之前发生,而实际导致动画的“结束状态”代码应该在“动画” block 中。与您的第一个示例等效的 block 是:

       CGRect rect ;
rect = self.titleView.frame;
rect.origin.x = -self.titleView.frame.size.width;
self.titleView.frame = rect;

[UIView animateWithDuration:13
delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{
CGRect rect ;
rect = self.titleView.frame;
rect.origin.x = [[UIScreen mainScreen] bounds].size.width;
self.titleView.frame = rect;
}
completion:^(BOOL finished) {
[self startScrolling];
}
];

这有帮助吗?

关于ios - uiview 动画在动画过程中添加加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14941365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com