如何在不实际缩放的情况下更改视图缩放值?
Posted
技术标签:
【中文标题】如何在不实际缩放的情况下更改视图缩放值?【英文标题】:How to Change a Views Scale Value without Actually Scaling it? 【发布时间】:2011-11-03 05:08:36 【问题描述】:我想知道是否可以在不实际缩放的情况下实际更改 UIViews 缩放值?例如,如何更改这个transform.scale
值:
[[[[myView] layer] valueForKeyPath:@"transform.scale"] floatValue];
我这样做的理由很古怪。我有一个应用程序,我可以在其中导入用户可以在屏幕上拖动和缩放的图像。导入图像后,我最初必须对其进行缩放并将其居中以适合视图。当我缩放它时,它的“transform.scale”值从 1 变为我缩放它的任何值。如果我通过设置框架而不是 CGAffineTransformScale
来进行缩放,则可以解决此问题。但是,我想避免这种情况,只是想以某种方式将比例值重置为 1。
【问题讨论】:
令人困惑...我没听懂你的意思? @Inder Kumar Rathore 在视图上执行 CGAffineTransformScale 时,它会更改我上面列出的值,即 valueForKeyPath 之一。因此,如果它最初是 1,并且我将其缩小到一半,则比例将下降到 0.5。我想将比例值重置为 1,因此未来的比例是根据我刚刚执行的比例,而不是原始值。 好吧..让我看看能不能帮你 【参考方案1】:您无法通过 resetthe scale to 1 once you have scaled it, however you could have an
initialScalevariable and store this initial scale. When the user starts to scale after that, simply apply the scale factor to this
initialScale` 来获取实际比例。
例如,您最初缩放图像以适应它的缩放比例为 0.8,将 initialScale
设置为 0.8。
例如,当用户开始将图像从 1 缩小到 0.5 时,将此更改应用于您的初始比例,因此用户缩放到 0.5,将初始比例乘以等于 0.4。
【讨论】:
是的,这就是我现在正在做的事情,只是在寻找一种可以避免使用类变量的方法。【参考方案2】:您始终可以使用 UIView contentScaleFactor 属性。与视图的变换一样,contentScaleFactor 会更改视图相对于其他视图的显示大小,并且不会影响其用户坐标大小(即位置、边界、框架)。不同的是 contentScaleFactor 会改变视图后备存储位图的实际大小,而变换缩放不会。
【讨论】:
以上是关于如何在不实际缩放的情况下更改视图缩放值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 UIImageView 的情况下捏缩放 UIImage?