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放大