ios - UIView 自动布局在屏幕内或屏幕外滑动动画
<p><p>我不知道如何使用自动布局制作滑入/滑出动画。</p>
<p>我添加这样的约束:</p>
<pre><code>NSDictionary *viewsDic = @{@"tmpView" : tmpView};
|" options:0 metrics:nil views:viewsDic]];
|" options:0 metrics:nil views:viewsDic]];
[UIView animateWithDuration:.4 animations:^{
;
}];
</code></pre>
<p>但这动画会从 0,0 位置开始增长。如何实现滑入/滑出动画?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>据我了解,您需要获得移位效果。如果我的假设是正确的,您需要在动画期间手动管理水平或垂直填充。你需要得到水平/垂直约束的引用:</p>
<pre><code>@property (nonatomic, strong) NSLayoutConstraint *topPadding;
@property (nonatomic, strong) NSLayoutConstraint *heightConstraint;
</code></pre>
<p>添加具有初始值的约束,以便 <code>tmpView</code> 不在其父 View 的可见部分:</p>
<pre><code>self.heightConstraint = [NSLayoutConstraint constraintWithItem:tmpView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:0.0];
self.topPadding = [NSLayoutConstraint constraintWithItem:tmpView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:self.view.bounds.size.height];
;
;
</code></pre>
<p>那么我们只需要用动画显示 <code>tmpView</code>:</p>
<pre><code> ;
[UIView animateWithDuration:.4 animations:^{
self.topPadding.constant = 0.0;
self.heightConstraint.constant = self.view.bounds.size.height;
;
}];
</code></pre>
<p>这个例子 tmpView 从底部出现。
请确保 <code>self.topPadding</code> 不会与您的其他约束冲突</p>
<p>要隐藏 View ,您可以使用以下内容:</p>
<pre><code> ;
[UIView animateWithDuration:.4 animations:^{
self.topPadding.constant = self.superview.bounds.size.height;
;
}];
</code></pre>
<p>UPD.:有时您还需要添加高度约束。在我的示例中添加了 <code>self.heightConstraint</code> 的使用</p>
<p>UPD.:您仍然需要水平约束。
请留下这些行:</p>
<pre><code>NSDictionary *viewsDic = @{@"tmpView" : tmpView};
|" options:0 metrics:nil views:viewsDic]];
</code></pre></p>
<p style="font-size: 20px;">关于ios - UIView 自动布局在屏幕内或屏幕外滑动动画,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/25423278/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/25423278/
</a>
</p>
页:
[1]