gpt4 book ai didi

ios - 如何使用动画在 x 方向上延长 UISearchBar?

转载 作者:行者123 更新时间:2023-11-29 13:24:09 25 4
gpt4 key购买 nike

我想用动画将右侧搜索栏向左延长 20 像素,将左侧搜索栏向右缩短 20 像素。我该怎么做?

CGRect leftFrame = self.leftSearchBar.frame;
//leftFrame.origin.x = leftFrame.origin.x - 20;
leftFrame.size.width = leftFrame.size.width - 40;

CGRect rightFrame = self.rightSearchBar.frame;
rightFrame.origin.x = rightFrame.origin.x - 40;
rightFrame.size.width = rightFrame.size.width + 40;

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelay:0.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

self.leftSearchBar.frame = leftFrame;
self.rightSearchBar.frame = rightFrame;

[UIView commitAnimations];

这是行不通的。它首先调整没有动画的 View 大小,然后移动带有动画的右 View 。

最佳答案

假设您没有更改 anchor 或类似内容,只需扩大宽度即可使其向右拉伸(stretch)。将它包装在一个 UIView 动画 block 中,它应该根据问题中的规范进行动画处理,如下所示:

UISearchBar* searchbar = ...; // However you've created your UISearchBar, we'll refer to it as 'searchbar'

CGRect searchFrame = searchbar.frame;
[UIView animateWithDuration:0.8
delay:0.0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{
searchFrame.size.width += 30;
searchbar.frame = searchFrame;
}
completion:nil];

您需要确保 += 30 不会被多次调用,否则您将每次扩展 30 个点叫做。如果您事先知道大小,则可以简单地将其替换为 = size + 30,这是一个更安全的选择,以防您多次调用动画。

关于ios - 如何使用动画在 x 方向上延长 UISearchBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13594101/

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