Анимировать встроенное свойство фрейма UIWebView - PullRequest
6 голосов
/ 15 апреля 2011

после долгого поиска без результатов, возможно кто-то знает ответ на следующую проблему:

У меня есть UIView, который содержит UIWebView в качестве подпредставления. UIView - это просто оболочка, так что я могу размещать кнопки и т. Д. Поверх UIWebView. Теперь я хочу анимировать изменение размера и расположение UIView И UIWebView одновременно. Я хочу, чтобы это выглядело так, как будто это был просто изменяемый размер UIWebView. Я пробовал различные методы анимации: блок / коммит, неявный / явный, например, вот так:

[UIView beginAnimations:@"zoomIn" context:nil];  
[UIView setAnimationDuration:1.0];  

myWrapperUIView.frame = CGRect(0.0, 0.0, 500.0, 500.0);  
myUIWebView.frame = CGRect(0.0, 0.0, 500.0, 500.0);

[UIView commitAnimations];

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

Я также попробовал встроенную анимацию для UIWebView, но тот же результат.

Мой вопрос:
Есть ли способ одновременной анимации обоих видов, чтобы в каждый момент времени UIWeb заполнял UIView?

Спасибо,
Michael

Ответы [ 2 ]

1 голос
/ 18 декабря 2013

используйте CGAffineTransform и масштабируйте представление, используя свойство transform, оно выполнит эту работу.

myWrapperUIView.frame = CGRect(0.0, 0.0, 500.0, 500.0);  
myUIWebView.frame = CGRect(0.0, 0.0, 500.0, 500.0);
self.window.userInteractionEnabled =NO;
myWrapperUIView.transform = CGAffineTransformMakeScale(0.01, 0.01);
myUIWebView.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:ANIMATIONDURATION animations:^{
    myWrapperUIView.transform = CGAffineTransformMakeScale(1.0, 1.0);
    myUIWebView.transform = CGAffineTransformMakeScale(1.0, 1.0);
    }completion:^(BOOL finished) {
      self.window.userInteractionEnabled = YES;
}];

НАДЕЖДА ЭТИМ ПОМОГАЕТ,

0 голосов
/ 13 января 2012

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

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

@property(nonatomic) UIViewAutoresizing autoresizingMask

...