setTransform:CGAffineTransformMakeScale - 尝试缩放UIView时的替代方法

时间:2011-04-03 19:11:25

标签: iphone objective-c cocoa-touch uiview cgaffinetransform

我使用以下内容将视图缩放到原始大小的3倍:

[pageShadowView setTransform:CGAffineTransformMakeScale (3, 1)];

我想有一个测试我的UIView(pageShadowView)是否已经缩放的方法 - 在这种情况下我想将它除以3,以便它恢复到正常大小。

我想不出任何能做到这一点的方法。所以我认为最好测试我的UIPageView是否具有某个尺寸,以及是否不将其重新缩放到原始尺寸。

所以我的问题是,是否有一种方法可以将UIView缩放到某个不相对的宽度和高度(即大小的3倍),但以像素表示(例如200像素x 300像素)。 / strong>我在文档中找不到任何东西,说实话,在CGAffineTransform部分有点过头了。

非常感谢任何建议!

1 个答案:

答案 0 :(得分:7)

要检查您的视图是否已缩放,我们只需检查其transform是否不是标识转换。

BOOL isScaled = ! CGAffineTransformIsIdentity(pageShadowView.transform);

应该注意,只有在您不使用任何其他类型的转换,即轮换或翻译时,此检查才有效。

UIView缩放到一定的宽度和高度也很容易:

CGFloat yourDesiredWidth = 200.0;
CGFloat yourDesiredHeight = 300.0;

CGAffineTransform scalingTransform;
scalingTransform = CGAffineTransformMakeScale(yourDesiredWidth/pageShadowView.bounds.size.width, 
                                              yourDesiredHeight/pageShadowView.bounds.size.height);
pageShadowView.transform = scalingTransform;

检查UIView的{​​{1}}代替bounds非常重要,因为转换frameframe无效。