如何在不实际扩展的情况下更改视图比例值?

时间:2011-11-03 05:08:36

标签: iphone objective-c ios cocoa-touch core-graphics

我想知道是否有可能实际更改UIViews比例值而不实际缩放它?例如,如何更改此transform.scale值:

[[[[myView] layer] valueForKeyPath:@"transform.scale"] floatValue];

我这样做的原因很简单。我有一个应用程序,我导入一个用户可以在屏幕上拖动和缩放的图像。导入图像时,我最初需要对其进行缩放并将其居中以适合视图。当我缩放它时,它的“transform.scale”值从1变为我对其缩放的任何值。如果通过设置框架而不是执行CGAffineTransformScale来进行缩放,则可以解决此问题。但是,我想避免这种情况,只是想以某种方式将比例值重置为1。

2 个答案:

答案 0 :(得分:3)

您无法重置the scale to 1 once you have scaled it, however you could have an initialScale variable 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。

答案 1 :(得分:0)

您始终可以使用UIView contentScaleFactor属性。与视图的变换类似,contentScaleFactor相对于其他视图更改视图的显示大小,并且不会影响其用户坐标大小(即位置,边界,框架)。不同之处在于contentScaleFactor会更改视图后备存储位图的实际大小,而变换缩放则不会。