微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 如何将UIView缩放(缩放)到给定的CGPoint

我花了很多时间试图找到一种方法来使用CGAffinescale将视图转换为给定的点,包括解决锚点,移动视图前后的变化和全面的谷歌搜索的中心.我知道这将是一个更简单的UIScrollview;但是我知道在技术上可以做到没有一个,它成为我的脑海中的碎片.

This answer非常接近我想要达到的目标,但答案只提供如何通过巧妙地将中心移动到与您要放大的角落相对的角落来缩放到给定角落(而不是给定点)的细节.

如何修改mvds‘ code将UIView缩放到UIView中的任何给定点?

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

解决方法

有两个步骤:首先,您放大要放大的视图.然后你设置这个被炸毁视图的中心,这样你想要看到的部分就在视图的中间.

你应该在纸上画出来,公式如下:(未经测试)

CGFloat s = 3;
CGPoint p = CGPointMake(100,200);
CGAffineTransform tr = CGAffineTransformScale(self.view.transform,s);
CGFloat h = self.view.frame.size.height;
CGFloat w = self.view.frame.size.width;
[UIView animateWithDuration:2.5 delay:0 options:0 animations:^{
    self.view.transform = tr;
    CGFloat cx = w/2-s*(p.x-w/2);
    CGFloat cy = h/2-s*(p.y-h/2);
    self.view.center = CGPointMake(cx,cy); //was: (w*s/2,h-h*s/2);
} completion:^(BOOL finished) {}];

原文地址:https://www.jb51.cc/iOS/330050.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐