gpt4 book ai didi

ios - UITextField 在 CABasicAnimation 期间被裁剪,keyPath 为 bounds.size.width

转载 作者:行者123 更新时间:2023-12-01 16:51:15 24 4
gpt4 key购买 nike

我手头有一个奇怪的问题。我有 UITextField。当点击按钮时,此 TextField 的宽度会调整大小。为此,我首先做了以下事情:

CGRect newbounds = originalBounds;
newbounds.size.width = newbounds.size.width/2;

[UIView beginAnimations:nil context:nil];
self.textField2.bounds = newbounds;
[UIView commitAnimations];

很简单,它奏效了。现在我继续前进并尝试对动画进行更多控制。为此,我使用以下内容进入 CABasicAnimation 的下一个级别:
CGRect newbounds = originalBounds;
newbounds.size.width = newbounds.size.width/2;

CABasicAnimation *animShrink = [CABasicAnimation animation];
animShrink.keyPath = @"bounds";
animShrink.toValue = [NSValue valueWithCGRect:newbounds];
animShrink.duration = 0.5;
animShrink.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animShrink.delegate = self;

[self.textField2.layer addAnimation:animShrink forKey:@"shrink"];

那就是我在动画过程中遇到剪辑问题的时候,如下所示: http://coldstorage.macbonsai.com/public/cabasic_animation_clipping.png (因为根据 Stackoverflow,我“需要至少 10 个声望才能发布图像”)。

所以我尝试了以下版本的动画:
CGRect newbounds = originalBounds;
newbounds.size.width = newbounds.size.width/2;

CABasicAnimation *animShrink = [CABasicAnimation animation];
animShrink.keyPath = @"bounds.size.width";
animShrink.fromValue = [NSNumber numberWithFloat:originalBounds.size.width];
animShrink.toValue = [NSNumber numberWithFloat:newbounds.size.width];
animShrink.duration = 0.5;
animShrink.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animShrink.delegate = self;

[self.textField2.layer addAnimation:animShrink forKey:@"shrink"];

还是遇到了同样的问题。此时,我从 UITextField 中删除了所有约束并尝试了 CABasicAnimation 版本。同样的问题。在这一点上,我不知道还能做什么。任何帮助将不胜感激。

提前谢谢了。

最佳答案

如果您将按钮的样式更改为 UITextBorderStyleNone 它不会被剪裁。

我的猜测是,当样式为 UITextBorderStyleRoundedRect 时,Apple 可能只是将 UIImageView 添加到带有“圆形矩形”图像的按钮中,因此当您为按钮的图层设置动画时,它的 subview 不会一起动画,因为在 iOS 中您必须明确动画所有子层。

关于ios - UITextField 在 CABasicAnimation 期间被裁剪,keyPath 为 bounds.size.width,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15672376/

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