UIButtons 不动

Posted

技术标签:

【中文标题】UIButtons 不动【英文标题】:UIButtons don't move 【发布时间】:2013-07-12 15:02:56 【问题描述】:

我是 ios 开发的新手,最近两天遇到一个问题一直没有解决。 问题是: 我有一个ViewController,在视图的右边缘有几个UIButtons。它们是使用 Interface Builder 制作的。 有一个UIView,它位于左边缘。 按钮和UIView 在开始时可见。 此外,右侧还有一个UIView,它位于可见区域之外。 我需要一个动画结果,左视图向左移动,不可见,从右边缘的按钮到左边缘,右视图到视图的中心。 我做了一个代码:

[UIView animateWithDuration:0.5 animations:^
        self.p.center = CGPointMake (self.p.center.x-260, self.p.center.y);
        self.dimensionButton.center = CGPointMake (self.dimensionButton.center.x-260, self.dimensionButton.center.y);
        self.speedButton.center = CGPointMake (self.speedButton.center.x-260, self.speedButton.center.y);
        self.temperatureButton.center = CGPointMake (self.temperatureButton.center.x-260, self.temperatureButton.center.y);
        self.volumeButton.center = CGPointMake (self.volumeButton.center.x-260, self.volumeButton.center.y);
        self.weightButton.center = CGPointMake (self.weightButton.center.x-260, self.weightButton.center.y);
        self.currencyButton.center = CGPointMake (self.currencyButton.center.x-260, self.currencyButton.center.y);
        self.calculationScreen.center = CGPointMake(self.calculationScreen.center.x-260, self.calculationScreen.center.y);

    ];

按钮不向左,但两个视图都向左,我不知道为什么。 我试图重新制作这样的动画: 不要将按钮和视图向左移动,而是将 self.view 向右移动。 但是我遇到了问题:右侧视图上的按钮(calculateScreen)根本不起作用(甚至没有触摸动画)。

【问题讨论】:

你确定所有的插座都连接了吗?考虑 NSLog(@"%@", self.buttonThatIsntMoving);在动画之前。 所有插座都连接了,而且我有NSLog的前后动画,他们说按钮的坐标是正确的,按钮应该在左边,但他们没有 你在使用自动布局吗?如果是这样,你应该通过改变约束而不是设置中心来做任何动画。 谢谢你的想法,现在我正在阅读自动布局,我会尽快写 代码看起来不错。只需要一些调试。将动画缩减为仅包含两个视图:一个正确移动,一个不正确移动。 NSLog 预先两个视图(这将记录它们的帧)。在动画中添加一个完成块,再次记录视图。 【参考方案1】:

感谢您的帮助。

事实上,问题出在自动布局系统上。它试图保存Button 的右边缘和self.view 的右边缘之间的距离。该距离等于 0,因此按钮不想向左移动。该问题已通过删除按钮属性上的“使用自动布局”勾选来解决。

【讨论】:

如果你想使用自动布局,你可以动画你的约束而不是视图的框架。【参考方案2】:

更改他们的transform 而不是更改他们的center。这就是它的意义所在。

【讨论】:

以上是关于UIButtons 不动的主要内容,如果未能解决你的问题,请参考以下文章

UIButtons 作为标签栏?

管理多个按下的 UIButtons

比较具有 UIImageViews 的 UIButtons

UIScrollview 事件将被包含的 UIButtons 捕获

如何通过 UIButtons 读取 UILabel(没有文本)

用于 ipad 的 UITableViewCell 中的 UIButtons