やや奇妙な問題が手元にあります。私は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 の両方のバージョンを試しました。同じ問題。この時点で、他に何をすべきかわかりません。どんな助けでも大歓迎です。
よろしくお願いします。