iOS动画:下拉可以保持位置

时间:2013-05-14 16:10:14

标签: animation ios6 uikit

我正在尝试创建一个显示一组控件的下拉菜单。我让动画工作,但整个“按钮”随动画移动。

我的按钮是一个名为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);
}];

我只是希望面板的高度发生变化,但确实如此,但整个视图也会向上移动。

如何创建一个向下增加高度的动画?

1 个答案:

答案 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是内部坐标。当您更改边界时,系统必须决定如何处理框架;其解决方案是变化发生在固定的中心位置附近。因此,当高度向下增长时,顶部向上移动。