Масштабировать вид к центру подпредставления
У меня есть проблема, которую я не могу решить.
Я хотел бы масштабировать представление моего приложения так, чтобы оно казалось увеличенным, чтобы оно сохраняло свое соотношение сторон и заполняло всю ширину экрана.
Я (думаю), у меня есть математика, чтобы заставить это работать, но я не уверен, как применить это в операторе 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;
}];