Objective c 使用AutoLayout将UITextField从隐藏更改为可见时设置动画

Objective c 使用AutoLayout将UITextField从隐藏更改为可见时设置动画,objective-c,Objective C,我有一个UITextField设置为hidden,当我单击搜索按钮时,我想使其可见,但我想创建一个类似幻灯片的动画,如果我使用autoLayout,是否可以重新创建此效果 我用于动画的代码是当前代码(它创建淡入效果): 我想要实现的是,当\u searchField被隐藏时,将重新计算约束,以便向上移动searchField下的内容,而不是将按钮设置为隐藏,在加载视图之前将其alpha值设置为0.0。然后将代码更改为: if(!currentSrcState) { [UIView ani

我有一个UITextField设置为hidden,当我单击搜索按钮时,我想使其可见,但我想创建一个类似幻灯片的动画,如果我使用autoLayout,是否可以重新创建此效果

我用于动画的代码是当前代码(它创建淡入效果):


我想要实现的是,当
\u searchField
被隐藏时,将重新计算约束,以便向上移动searchField下的内容,而不是将按钮设置为隐藏,在加载视图之前将其alpha值设置为0.0。然后将代码更改为:

if(!currentSrcState)
{
    [UIView animateWithDuration:0.3
                          delay:0.0
                        options:UIViewAnimationOptionTransitionCurlDown
                     animations:^ {
                         _searchField.alpha = 1.0;
                     }
                     completion:nil];
    currentSrcState = YES;
}
else
{
    [UIView animateWithDuration:0.3
                          delay:0.0
                        options:UIViewAnimationOptionTransitionCurlDown
                     animations:^ {
                         _searchField.alpha = 0.0;
                     }
                     completion:nil];

    currentSrcState = NO;
}

抱歉,我认为我解释错了,动画效果很好,问题是UITextField占用的高度仍然存在,即使我将其设置为隐藏,因为它有约束,我想知道的是,是否有可能重新计算约束,以便也有这种动画您是否尝试过将
\u searchField
的帧与
.alpha
一起设置动画?我尝试过将高度设置为0,但不起作用
if(!currentSrcState)
{
    [UIView animateWithDuration:0.3
                          delay:0.0
                        options:UIViewAnimationOptionTransitionCurlDown
                     animations:^ {
                         _searchField.alpha = 1.0;
                     }
                     completion:nil];
    currentSrcState = YES;
}
else
{
    [UIView animateWithDuration:0.3
                          delay:0.0
                        options:UIViewAnimationOptionTransitionCurlDown
                     animations:^ {
                         _searchField.alpha = 0.0;
                     }
                     completion:nil];

    currentSrcState = NO;
}