【问题标题】:iOS animation: Drop down that keeps it positioniOS动画:保持位置的下拉
【发布时间】:2013-05-14 16:10:14
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: animation ios6 uikit


    【解决方案1】:

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

    【讨论】:

    • 哇,非常感谢!您是否碰巧知道是否有办法使视图高度从视图底部更改?所以动画看起来会变低。
    • 随心所欲地设置框架。您可能必须使用一些基本算术...!
    • 顺便说一下,如果你不了解框架和边界,我的书可能会对你有所帮助:apeth.com/iOSBook/ch14.html#_frame
    • 你可能会喜欢我关于动画的章节:apeth.com/iOSBook/ch17.html#_view_animation
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多