gpt4 book ai didi

cocoa-touch - UIView Animation 动画位置而不是宽度

转载 作者:行者123 更新时间:2023-12-04 09:21:54 24 4
gpt4 key购买 nike

我正在尝试转换 UISearchBar,就像在 Mobile Safari 中一样:触摸搜索字段,它会随着位置字段的缩小而增长。

我当前更改搜索字段的宽度和位置的动画仅对位置进行动画处理:就在它滑动到正确的位置之前,它只是简单地捕捉到正确的宽度。这是我的代码:

[UIView beginAnimations:@"searchGrowUp" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDelegate:self];

CGFloat findFieldWidth = findField.frame.size.width;
CGFloat urlFieldWidth = urlField.frame.size.width;
CGRect findFieldFrame = findField.frame;
CGRect urlFieldFrame = urlField.frame;

findFieldFrame.origin.x = findFieldFrame.origin.x - 150.0f;
findFieldFrame.size.width = findFieldWidth + 150.0f;
urlFieldFrame.size.width = urlFieldWidth - 150.0f;

urlField.frame = urlFieldFrame;
findField.frame = findFieldFrame;

[UIView commitAnimations];

为了在这里展示它,我稍微修改了这段代码,但我希望这能给出要点。

任何关于为什么会发生这种情况的猜测将不胜感激!

干杯,
亚伦。

最佳答案

感谢这篇文章,我想通了:Changing the size of the UISearchBar TextField?

结果显示 UISearchBar 的内容没有与外层一起正确调整大小。因此,您必须在搜索栏上设置帧后在动画块内调用 -layoutSubviews: 。所以块结束如下:

[findField setFrame:CGRectMake(findField.bounds.origin.y, findField.bounds.origin.y, findFieldWidth, findField.bounds.size.height)];
[findField layoutSubviews];

[UIView commitAnimations];

支持尼克法里纳!

关于cocoa-touch - UIView Animation 动画位置而不是宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497395/

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