Масштабировать вид к центру подпредставления

У меня есть проблема, которую я не могу решить.

Я хотел бы масштабировать представление моего приложения так, чтобы оно казалось увеличенным, чтобы оно сохраняло свое соотношение сторон и заполняло всю ширину экрана.

Я (думаю), у меня есть математика, чтобы заставить это работать, но я не уверен, как применить это в операторе 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;

И вот где я застрял. Я не уверен, как расположить представление так, чтобы оно выглядело по центру.

Вот изображение, чтобы продемонстрировать, чего я хотел бы достичь:

пример

В сущности, я бы хотел, чтобы изображение масштабировалось так, чтобы черный ящик анимировался в положение и размер красного поля.

Я немного застрял в этом, поэтому любая помощь приветствуется.

1 ответ

Решение

В таких случаях проще просто рассчитать последний кадр представления и установить его внутри блока анимации:

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;
}];
Другие вопросы по тегам