我正在尝试创建一个显示一组控件的下拉菜单。我让动画工作,但整个“按钮”随动画移动。
我的按钮是一个名为settingsPanel的UIView,到目前为止这是我的代码:
[UIView animateWithDuration:1.0f animations:^{
self.settingsPanel.bounds = CGRectMake(self.settingsPanel.bounds.origin.x, self.settingsPanel.bounds.origin.y, self.settingsPanel.bounds.size.width, self.settingsPanel.bounds.size.height + 300);
}];
我只是希望面板的高度发生变化,但确实如此,但整个视图也会向上移动。
如何创建一个向下增加高度的动画?
答案 0 :(得分:3)
您需要设置frame
,而不是bounds
。
[UIView animateWithDuration:1.0f animations:^{
self.settingsPanel.frame =
CGRectMake(self.settingsPanel.frame.origin.x,
self.settingsPanel.frame.origin.y,
self.settingsPanel.frame.size.width,
self.settingsPanel.frame.size.height + 300);
}];
Frame是外部坐标。更改框架时,可以在其超视图中更改视图的实际位置,这样可以保持原点和宽度不变,只需增加高度。
Bounds是内部坐标。当您更改边界时,系统必须决定如何处理框架;其解决方案是变化发生在固定的中心位置附近。因此,当高度向下增长时,顶部向上移动。