0

我有一个我似乎无法解决的问题。

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

我(认为)我有一些数学可以完成这项工作,但我不确定如何在 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;

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

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

例子

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

我有点坚持这一点,所以任何帮助表示赞赏。

4

1 回答 1

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;
}];
于 2012-04-16T12:23:24.477 回答