iOS - 如何放大 UIButton 的中心?

Posted

技术标签:

【中文标题】iOS - 如何放大 UIButton 的中心?【英文标题】:iOS - How to zoom into a UIButton's center? 【发布时间】:2014-05-11 05:07:46 【问题描述】:

我正在构建一个包含多行单元格的 uicollectionview。每个单元格将包含一个 UIButton。我希望能够在点击时“放大” UIButton。 我发现了这个放大 self.view 的代码,但我不确定如何让它正确放大被点击的 UIButton 的中心。现在,它向屏幕的右下角放大。

关于在点击的按钮上正确居中的任何建议?

-(void)didTapButton:(UIButton*)sender
    CGFloat s = 3;
    CGAffineTransform tr = CGAffineTransformScale(self.view.transform, s, s);
    CGFloat h = sender.frame.size.height;
    CGFloat w = sender.frame.size.width;
    [UIView animateWithDuration:2.5 delay:0 options:0 animations:^
        self.view.transform = tr;
        self.view.center = CGPointMake(w*s/2,h-h*s/2);
     completion:^(BOOL finished) ];

【问题讨论】:

您可能需要重新定位锚点... 【参考方案1】:

如果您使用自动布局,您将无法以您正在做的方式使用视图动画,因为布局由变换触发并不断重置框架。这可以解释为什么缩放似乎将视图向下和向右扩展,而不是从中心扩展。 (你可能想看看我在the struggle between auto layout and view transforms上的文章。)

【讨论】:

是的,我刚刚尝试禁用自动布局,但它仍然会放大到同一个位置。我猜这很可能就是我计算位置的方式。一定需要一些不同的逻辑。 是的,好吧,我有点担心您正在同时进行比例变换移动中心,这似乎有点不确定。 你的中心计算没有意义,因为发送者的框架是根据它的超级视图的边界,但self.view.center是根据 its 超级视图的边界,所以你是同时使用两个完全不同的坐标系,无需转换。

以上是关于iOS - 如何放大 UIButton 的中心?的主要内容,如果未能解决你的问题,请参考以下文章

iOS UITableView横向滑动点击UIButton放大

如何在没有 Interface Builder 的情况下将 UIButton 对象的中心约束到其父视图

IOS给UIButton添加阴影

在 UIButton IOS 上创建动画序列

UIButton 中的长名称缩短

如何取消基于UIView块的动画?