如何对使用了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 个侧面固定 RedView
,Right-Top-Left
第 2 步:
将RedView
和 ViewController 的主视图设为等高。
第 3 步:
选择RedView's
等高约束并转到它的属性检查器。 (右四个标签)
第 4 步:
将Multiplier
值更改为0.35
。
现在 RedView 在两个方向上都将始终位于主屏幕的35%
。
【讨论】:
谢谢....我试过这个工作正常...我的解决方案可以吗?或者他们是其中的任何问题。 尝试在情节提要或预览中更改视图的方向,您会得到答案。以上是关于如何对使用了autolayout的UIView添加动画的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Autolayout 在不同设备上保持 UIView 比例?
IOS - UIView中使用AutoLayout的UILabel动态高度
如何使用autolayout在UITableViewCell中分发4个组件?