2015-11-03 3 views
0

У меня есть UIWebView со встроенным видео в качестве дополнительного поднабора UIView. Вся эта страница выполняется программно. Я анимация изменения рамки веб-представления, но его scrollView автоматически изменяется, как только я меняю фрейм.Изменение изменения рамки UIWebview scrollView в iOS9

Как я могу предотвратить изменение размера webView.scrollView при изменении webView.frame?

EDIT: Изменение webView.frame изменений webView.scrollView.contentSize.height на величину, отличную от webView.frame.height. Зачем?

enter image description hereenter image description here

Моя минимизировать функцию вида является:

func minimizeViewOnPan() { 

     self.btnDown.hidden = true 
     var trueOffset: CGFloat = self.initialFirstViewFrame.size.height - 95 
     var xOffset: CGFloat = self.initialFirstViewFrame.size.width - 165 

     viewFrame.size.width = 160 
     viewFrame.size.height = 90 
     viewFrame.origin.y = trueOffset 
     viewFrame.origin.x = xOffset 

     UIView.animateWithDuration(0.3, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {() -> Void in 

      self.viewYouTube.frame = self.viewFrame 
      // self.viewYouTube.frame & self.viewFrame on iPhone 6: (210.0, 572.0, 160.0, 90.0) 

      // self.webView is a subview of self.viewYouTube 
      self.webView.frame = CGRectMake(self.player.frame.origin.x, self.player.frame.origin.x, self.viewFrame.size.width, self.viewFrame.size.height) 
      // On iPhone 6: (0.0, 0.0, 160.0, 90.0) 


      }) { (finished) -> Void in 

       // add tap gesture 
       self.tapRecognizer = nil 
       if (self.tapRecognizer == nil) { 

        self.tapRecognizer = UITapGestureRecognizer(target: self, action: "expandViewOnTap:") 
        self.tapRecognizer.numberOfTapsRequired = 1 
        self.tapRecognizer.delegate = self 
        self.viewYouTube.addGestureRecognizer(self.tapRecognizer) 
       } 

       self.isExpandedMode = false 
       self.minimizedYouTubeFrame = self.viewYouTube.frame 

       if (self.direction != nil) && (self.direction == UIPanGestureRecognizerDirection.Down) { 

        self.onView.bringSubviewToFront(self) 
       } 
     } 

    } 

Более половины видео обрывается, как есть. Поэтому мой вопрос заключается в том, почему минимальное изменение видео изменилось неправильно?

+0

Непосредственно изменяется. Представление 'contentSize.height 'представления неверно. Если я могу отключить это, я могу правильно установить 'scrollView.zoomScale' то, что я хочу. Если я назову это сейчас, 'zoomScale' применяется к неправильному' contentSize.height'. И ручное вызов 'contentSize.height' ничего не делает. – chicobermuda

+0

@matt видеть отредактировано. – chicobermuda

+0

На самом деле, я уточнил свой вопрос, чтобы дать другим пользователям лучшую идею. 'webView.scrollView' неправильно изменяет размер, потому что его' contentSize.height' неверен, что я не могу установить самостоятельно. Я искренне благодарен за решение или конструктивную обратную связь. – chicobermuda

ответ

0

Выяснил это. Мы показывали iFrame YouTube с постоянной высотой 210. Поэтому, когда представление было сведено к минимуму, я не мог позвонить contentSize, потому что он контролировался JS iFrame. Так как высота видео составляла 210, а высота веб-просмотра составляла 90, мы использовали self.player.scrollView.contentOffset = CGPointMake(0, 60) ((210/2) - (90/2) = 60) для смещения высоты представления.

Смежные вопросы