0

У меня проблема, которую я не могу решить.Масштабный вид на центр subview

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

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

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

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

ответ

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; 
}]; 
Смежные вопросы