问题标签 [cgaffinetransformscale]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
538 浏览

ios - 通过捏合手势缩放 UICollectionView

我有一个UICollectionView里面有很多细胞(大约 5k+)。我想捏一下放大/缩小。我已经尽力了invalidateLayout。它真的很慢。所以我想使用CGAffineTransformMakeScale,但我不知道如何在此之后滚动。我的代码是:

但是当放大时我无法左右滚动。帮帮我。

0 投票
1 回答
443 浏览

ios - 为什么在步骤中应用的 CGAffineTransform 的行为与一次应用的行为不同?

在逐步应用转换而不是立即应用它们时,我看到了一些意想不到的、不一致的行为,我想知道为什么。

假设我们有一个标签,我们想向右100和向下平移50,然后放大到1.5原始大小的倍数。所以有两种转换:

  1. 翻译
  2. 规模

假设我们正在试验两种不同的动画:

  1. 并行执行平移和缩放
  2. 执行平移,然后依次执行缩放

在第一个动画中,您可能会执行以下操作:

第一部动画

一切都按照您的预期进行。标签同时平滑地平移和缩放。

在第二个动画中:

动画 2

标签翻译正确,然后繁荣,它意外跳跃,然后开始缩放。

是什么导致了这种突然的、意想不到的跳跃?通过检查每个变换(并行和顺序变换)的矩阵,值是相同的,正如预期的那样。

并行动画

顺序动画

那么是什么导致了突然的跳跃呢?

0 投票
0 回答
133 浏览

ios - 图像控制点倾斜

呃,

我需要一个图像倾斜控件,其行为由以下两个屏幕截图展示:

起始状态

控制点移动

控制点绘制和用户交互是“简单的”并且大部分都已完成。基本上,正如您很可能已经理解的那样,可以一次一个地移动控制点,以扭曲和倾斜图像。

我遇到的问题是从不同的用户交互中创建的实际图像转换。含义 - 我不知道如何将用户交互映射到图像转换。应该使用哪种控制点组合或单独的控制点来修改倾斜变换的哪一部分?

我可能会补充说相当混乱。我已经在网上阅读了很多关于倾斜变换的资源,这一切都很好而且很花哨,但我真的看不到通过控制点应用它的方法。

欢迎任何和所有提示!

0 投票
1 回答
95 浏览

ios - 多个 CGAffineTranform 语句不能给出平滑的结果

我正在我的 UIView 上应用旋转和缩放。当我应用其中一个变换时,它工作正常,但是当我尝试同时应用这两个变换时,结果有点不那么顺利。它会在重置并开始应用时出现。这是我的代码 在此处输入代码

在此处输入图像描述

更新这是我用 CGPoint 扩展编写的 getDistance 方法

0 投票
1 回答
26 浏览

ios - 如何在Objective-C中同时防止对象上的2个动画?

我有一个UILabel,每次触摸时,它都会用动画进行缩放CGAffineTransformMakeScale,然后用动画恢复到真实大小。现在,如果它在最后一个动画结束之前触摸,它会缩放缩放的对象而不是主对象的实际大小,因此它的缩放比例会超过应缩放的比例。如何预防这个问题?我想在最后一次缩放结束缩放对象的主要大小之前第二次触摸。

这是我的代码:

0 投票
1 回答
46 浏览

ios - IOS/Objective-C:多个CGAffineTransformation的动画

我正在尝试执行一个同时执行三件事的动画:平移、旋转和更改图像的大小。

我可以一次做两个,翻译和大小。但是,当我在以下代码末尾添加旋转时,它会被忽略。如果我将它放在代码的开头,则忽略大小变化。我读过您可以使用 view.transform 进行复合转换,但是,我无法让它工作。

这是我当前的代码:

}

任何人都可以推荐让所有三件事同时发生的方法。

这是一些使用视图的转换属性的 swift 代码,但我无法在 Objective-C 中找到等效的代码。

在此先感谢您的任何建议。

0 投票
1 回答
131 浏览

objective-c - 在边界内旋转图像

我尝试在其超级视图中旋转图像视图,以便旋转时此图像视图始终接触超级视图的边界而不跨越它们,并进行适当的调整大小。我该如何实施?图像视图应该能够围绕 360° 旋转。

在这里,我使用基于三角形公式的计算,考虑到初始图像视图对角线角度。

也许我应该考虑旋转后图像视图的新边界框(它的 x 和 y 坐标变为负数,变换后的帧大小也变大)。

到目前为止没有成功,我的图像视图被缩小得太快而且太多了。因此,据我所知,我的目标是为CGAffineTransformScale. 也许还有其他方法可以做到这一点。

例子 编辑

由于答案,我覆盖了常规,现在它可以工作了!

0 投票
1 回答
1144 浏览

ios - 设备旋转后 CGAffineTransform.identity 无法正确重置变换

我正在做一个自定义转换,如果在呈现动画之后,设备将被旋转,然后destinationVC 将被关闭,originVC 转换不正确(不完成屏幕)。如果没有设备旋转,一切正常。有没有人可以帮助我?

这是我的呈现和关闭动画的代码:

屏幕:在当前动画之前 在当前动画 之前的动画 之后 现在动画之后 在设备旋转 设备旋转后 之后 在关闭动画之后 关闭动画后

编辑:当我添加destinationViewController.view.frame = transitionContext.finalFrame(for: destinationViewController)关闭动画时,一切似乎都很好,但我不知道这是否正确

0 投票
2 回答
318 浏览

ios - CGAffineTransform 不能正确缩放原点

我可能误解了 CGAffineTransform 的工作原理,但它似乎为帧的起源给出了奇怪的结果。

例如 :

给出结果:

(213.0、54.0、459.0、23.5)

(286.29948979591836, 57.75280612244898, 312.4010204081633, 15.994387755102032)

宽度和高度比例正确,但 x 和 y 原点的值增加了。