Animation iOS动画:保持其位置的下拉列表

Animation iOS动画:保持其位置的下拉列表,animation,ios6,uikit,Animation,Ios6,Uikit,我正在尝试创建一个下拉菜单来显示一组控件。我让动画工作,但整个“按钮”与动画一起移动 我的按钮是一个名为settingsPanel的UIView,这是我迄今为止的代码: [UIView animateWithDuration:1.0f animations:^{ self.settingsPanel.bounds = CGRectMake(self.settingsPanel.bounds.origin.x, self.settingsPanel.bounds.origin.y,

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

我的按钮是一个名为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);
}];
我只是想改变面板的高度,确实如此,但整个视图也会向上移动一点


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

您需要设置
帧,而不是
边界

[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);
}];
框架是一个外部坐标。更改帧时,将更改视图在其superview中的实际位置,以便可以保持原点和宽度不变,只需增加高度即可


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

您需要设置
框架,而不是
边界

[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);
}];
框架是一个外部坐标。更改帧时,将更改视图在其superview中的实际位置,以便可以保持原点和宽度不变,只需增加高度即可


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

哇,非常感谢!您是否知道是否有一种方法可以从视图底部更改视图高度?因此,动画看起来会变低。只需根据需要设置帧。你可能需要使用一些基本的算术。。。!顺便说一句,如果你不理解框架和边界,我的书可能会帮助你:你可能会喜欢我关于动画的章节:哇,非常感谢!您是否知道是否有一种方法可以从视图底部更改视图高度?因此,动画看起来会变低。只需根据需要设置帧。你可能需要使用一些基本的算术。。。!顺便说一句,如果你不理解框架和边界,我的书可能会帮助你:你可能会喜欢我关于动画的章节: