缩放视图到中心子视图

时间:2012-04-15 11:02:22

标签: iphone cocoa-touch uiview cgaffinetransform cgaffinetransformscale

我遇到了一个我似乎无法解决的问题。

我想缩放我的应用程序的视图,以便看起来视图已“放大”以保持其宽高比并填充整个屏幕宽度。

我(想)我有一些数学可以使这项工作,但我不知道如何在CGAffineTransform语句中应用它,或者如何使视图居中。

第1步
缩放视图:

float scaleFactor = (320 / boxWidth);

self.view.transform = CGAffineTransformMakeScale(scaleFactor, scaleFactor);

第2步
定位视图使其显示为居中:

CGRect newFrame = self.view.frame;

newFrame.x = 20;
newFrame.y = mainBox.frame.origin.y;    

self.view.frame = newFrame;

这就是我被困住的地方。我不确定如何定位视图以使其看起来居中。

这是一张展示我想要实现的目标的图片:

example

基本上,我希望缩放视图,以便黑框动画显示红框的位置和大小。

我有点坚持这一点,所以感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在这种情况下,更容易计算视图的最终帧并将其设置在动画块中:

CGRect newFrame = self.view.frame;
newFrame.size.height *= 320.0f / newFrame.size.width;
newFrame.size.width = 320.0f;
newFrame.origin.x = 0.0f;
// Set newFrame.origin.y as desired

[UIView animateWithDuration: 0.5 animations: ^{
    self.view.frame = newFrame;
}];