如何对使用了autolayout的UIView添加动画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对使用了autolayout的UIView添加动画相关的知识,希望对你有一定的参考价值。

参考技术A   在首次点击birthday button的时候动画修改根view的bounds和date picker view的top constraint,注意上移gap的计算。再次点击birthday button的时候将根view的bounds恢复到正常值,date picker view的top constraint也恢复到viewDidLoad中设置的值:
  - (IBAction)didTapOnBirthdayButton:(id)sender

self.hasShowPickerView = !self.hasShowPickerView;
if (self.hasShowPickerView)
CGRect birthdayButtonFrame = self.birthdayButton.frame;
birthdayButtonFrame = [self.view convertRect:birthdayButtonFrame fromView:self.birthdayButton.superview];
CGFloat birthdayButtonYOffset = birthdayButtonFrame.origin.y + birthdayButtonFrame.size.height;
CGFloat gap = birthdayButtonYOffset - (self.view.frame.size.height - self.pickerContainerView.frame.size.height);
CGRect bounds = self.view.bounds;
if (gap > 0)
bounds.origin.y = gap;
else
gap = 0;

[self replacePickerContainerViewTopConstraintWithConstant:birthdayButtonYOffset];
[UIView animateWithDuration:0.25 animations:^
self.view.bounds = bounds;
[self.view layoutIfNeeded];
];
else
[self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height];
CGRect bounds = self.view.bounds;
bounds.origin.y = 0;
[UIView animateWithDuration:0.25 animations:^
self.view.bounds = bounds;
[self.view layoutIfNeeded];
];



  上述代码中的[self.view layoutIfNeed]去掉也是没问题的。可能比较费解的是根view.bounds.origin.y的上移gap的计算以及top constraint的constant值的计算,关键实在真正理解view的frame和bounds的意义。

如何使用 Autolayout 在不同设备上保持 UIView 比例?

【中文标题】如何使用 Autolayout 在不同设备上保持 UIView 比例?【英文标题】:How to maintain UIView ratio across different devices using Autolayout? 【发布时间】:2016-11-22 07:00:30 【问题描述】:

我在LaunchScreen 中有一个UIView

我在UIView 中添加了以下约束。

我希望我的红色视图总是35% 的屏幕。

我将RedView 的高度计算为:我的ViewController 高度是667 我计算了35% 并分配给RedView

我想知道我的方法是否正确。因为iPhone6Plus 的宽度变化很小,高度变化很大。

我的限制对于 35:65 屏幕是否正确。

【问题讨论】:

【参考方案1】:

除了给出纵横比之外,您还可以给它一个 35% 的乘数。

第 1 步: 从 3 个侧面固定 RedViewRight-Top-Left

第 2 步:RedView 和 ViewController 的主视图设为等高。

第 3 步: 选择RedView's 等高约束并转到它的属性检查器。 (右四个标签)

第 4 步:Multiplier 值更改为0.35

现在 RedView 在两个方向上都将始终位于主屏幕的35%

【讨论】:

谢谢....我试过这个工作正常...我的解决方案可以吗?或者他们是其中的任何问题。 尝试在情节提要或预览中更改视图的方向,您会得到答案。

以上是关于如何对使用了autolayout的UIView添加动画的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Autolayout 在不同设备上保持 UIView 比例?

IOS - UIView中使用AutoLayout的UILabel动态高度

使用Autolayout为UIView设置动画

如何使用autolayout在UITableViewCell中分发4个组件?

使用 Autolayout 将 CustomView 适配到 SuperView

如何在 AutoLayout 中设置 UIView 的框架?