0

我已经花了大约 3 个月的时间试图找出一个问题,并最终求助于帮助。我有一个带有 5 个圆形矩形按钮的菜单。我想知道是否有一种方法可以做到,所以当我单击第一个按钮时,其他四个向下移动,为第一个按钮下的子菜单创建空间。第二个、第三个、第四个和第五个按钮也是如此。但是,与此同时,我想这样做,如果单击第一个按钮,则其他四个向下移动,并说第三个被单击,第四个和五个向下移动更多,并且当他们不能时启动滚动视图不再一次全部显示在屏幕上。提前感谢所有帮助:)。

4

2 回答 2

1

事实上,你可以做到这一点。这是一个给你的例子。要点是你制作一个新的 IBAction,当你按下按钮时它会拍摄坐标。因此,如果您对按下按钮时发生的事情有自己的方法,只需将其添加到其中:

button.frame = CGRectMake(button.frame.origin.x, (button.frame.origin.y), button.frame.size.width, button.frame.size.height);

至于更改按钮的移动位置,请制作类似的方法,然后添加到坐标中以移动它。例如,如果你想将上面的按钮向上移动 150 像素,你可以这样做:

button.frame = CGRectMake(button.frame.origin.x, (button.frame.origin.y - 150.0), button.frame.size.width, button.frame.size.height);

看看我在那里做了什么?您只需在框架中添加或减去即可将按钮移动到您希望它们移动的位置。

于 2012-02-21T03:28:32.297 回答
0

我认为您应该将它们全部放在 tableView 而不是 UIScrollView(本身就是一个 scrollView)中,并heightForRowAtIndexPath根据您的意愿覆盖这些方法。您可能必须为此编写一个自定义 UITableViewCell 并具有一个属性来了解是否选择了单元格并将其切换到didSelectRowAtIndexPath. 在末尾使用 tableView 的 beginUpdates 和 endUpdates 方法didSelectRowAtIndexPath自动为其他子视图的移动设置动画。

您也可以通过更改 UIButtons 的原点来移动它们来为此编写动画,但是我已经尝试过了,并且使用这么多的子视图,它变得非常混乱,相信我。要查看具有动态行高且只有一个可选单元格的示例代码,您可以查看:https ://stackoverflow.com/a/13293380/936957 。要启用多项选择,您可以在 viewController/UITableView 的委托处使用 NSMutableArray,也可以像我之前所说的那样放置自定义 UITableViewCell 的属性,两者都应该可以正常工作。

于 2012-11-08T23:43:16.830 回答