gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:26:07 27 4
gpt4 key购买 nike

我花了很多时间试图找到一种使用 CGAffineScale 将 View 转换为给定点的方法,包括摆弄 anchor 、在转换前后移动 View 的中心以及全面的谷歌搜索。我知道使用 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) {}];

最佳答案

涉及 2 个步骤:首先,放大要放大的 View 。然后设置这个放大 View 的中心,使您想要看到的部分最终位于 View 的中间。

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

CGFloat s = 3;
CGPoint p = CGPointMake(100, 200);
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;
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) {}];

关于ios - 如何将 UIView 缩放(缩放)到给定的 CGPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18329286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com