如何添加视图(以及缩小或拉伸其他)iOS
Posted
技术标签:
【中文标题】如何添加视图(以及缩小或拉伸其他)iOS【英文标题】:How to add view (and shrink or stretch other) iOS 【发布时间】:2014-03-25 11:16:24 【问题描述】:我应该弹出一个视图,并从底部开始动画
这个视图(如下图所示)应该隐藏并弹出。(屏幕 5->6 隐藏)(屏幕 6->5 弹出)。
可以看到UIWebView(带文字的view是UIWebView),需要适当的收缩和拉伸。
我想知道这样做的正确方法是什么。我应该创建 320pt x 0pt 视图(因为它没有高度而将被隐藏),然后为它的“高度”属性设置动画,并更新高度约束?或者我应该采取不同的方法?
我使用故事板系统。
非常感谢您的时间和回答
【问题讨论】:
动画高度是一个很好的解决方案。 @tarmes 1. 在情节提要中设计视图(如在第 5 个屏幕中) 2. 使视图高度为 0pt。 3. 动画这个视图的高度属性? 【参考方案1】:1) 像视图 5 一样设计您的屏幕。
2) 使用弹出视图的“打开”高度设置约束。上面视图的底部需要连接到弹出视图的顶部,并且该顶部视图显然不应该有固定的高度。
3) 为高度约束创建一个出口
4) 在 windowDidLoad 中,通过从约束中获取“打开”高度来存储它(这样您就不必在代码中单独维护它)。例如(其中 _popUpHeight 是 CGFloat 成员变量):
- (void)viewDidLoad
_popUpHeight = _popUpHeightConstraint.constant;
5) 在需要时为约束设置动画。像这样的:
- (IBAction)togglePopup:(id)sender
[UIView animateWithDuration:5
animations:^
_addBannerDistanceFromBottomConstraint.constant = (_popupState) ? 0 : _popUpHeight;
];
_popupState = !_popupState;
【讨论】:
你的意思是“viewDidLoad”? NSAnimationContext 仅在 Mac OS 上可用...我认为。 哎呀——我刚刚从我当前的项目中抓取了一大块代码,没有考虑。我已经更新了答案 还有一个问题:你需要添加“[self.view layoutIfNeeded];”到动画结束,如果你动画约束。我不知道为什么。【参考方案2】:试试这个代码:
[UIView animateWithDuration:duration
delay:delay
options:UIViewAnimationOptionCurveEaseInOut
animations:^(void)
viewToChange.frame = CGRectMake(x, y, width, height);
completion:NULL];
你需要一个 viewToChange 的出口。
【讨论】:
当然——但是放弃自动布局是一个很大的代价,因为它已经成熟了。以上是关于如何添加视图(以及缩小或拉伸其他)iOS的主要内容,如果未能解决你的问题,请参考以下文章