0

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

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

我只想改变面板的高度,确实如此,但整个视图也向上移动了一点。

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

4

1 回答 1

4

您需要设置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);
}];

框架是外部坐标。当您更改框架时,您会更改视图在其父视图中的实际位置,因此您可以保持原点和宽度相同,而只是增加高度。

Bounds 是一个内部坐标。当您更改边界时,系统必须决定如何处理框架;它的解决方案是改变发生在一个固定的中心位置附近。因此,随着高度向下增长,顶部向上移动。

于 2013-05-14T19:44:34.293 回答