Esto es probablemente algo fácil para algunos expertos, así. la cosa es que no hay WKWebView en Xcode interfaz visual para storyboard uso, como contraposición a UIWebview, así que tiene que ser creado mediante programación . estoy usando un nav controlador para mi toda la aplicación.

He creado una VISTA en la historia de la junta y de auto usado de diseño para la restricción de la 0,0,0,0. así que le gustaría añadir la WKWebView a la vista «Daview». como una subvista y llene completamente . me parece que no puede averiguar.

Por favor, eche un vistazo a el código de Abajo

class ViewController2: UIViewController ,WKNavigationDelegate {

    @IBOutlet weak var navigation: UINavigationItem!

    @IBOutlet var daview: UIView!
    var restWeb: WKWebView?

    @IBOutlet var BottomView: UIView!

   //var ActivityIndicator =  UIActivityIndicatorView()


     override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(true)       
         println(" daview bounds in VIEWDIDAPPEAR is \(self.daview.bounds) y Frame \(self.daview.frame)")
       restWeb!.bounds = daview.bounds
    }



    override func viewDidLoad() {
        super.viewDidLoad()

        /* Create our preferences on how the web page should be loaded */
        let preferences = WKPreferences()
        preferences.javaScriptEnabled = true

        /* Create a configuration for our preferences */
        let configuration = WKWebViewConfiguration()
        configuration.preferences = preferences


        /* Now instantiate the web view */
        restWeb = WKWebView(frame: self.daview.bounds, configuration: configuration)

   let urlString = "http://www.google.com"  


        println("EL DETAIL URL es \(urlString)")
        if let theWebView = restWeb {
            println("Existe restWeb")
        let urlRest = NSURL(string:urlString)
        let requestRest = NSURLRequest(URL: urlRest!)
        theWebView.loadRequest(requestRest)
        theWebView.allowsBackForwardNavigationGestures = true
        theWebView.navigationDelegate = self
        self.daview.addSubview(theWebView)
        }


} //finish viewdidload
  • Lo consiguió con la ayuda de cacao-init irc en freenode.. la respuesta es.. Deshabilitar : Ajuste de desplazamiento de la vista de inserciones

4 Comentarios

  1. 12

    Una línea de respuesta: Mover el código de viewDidLoad() para viewDidAppear()

    Explicación: no soy un experto, pero me he enfrentado a este problema en mis primeros días.
    El problema con el webview es que usted está tratando de establecer los límites en viewDidLoad()

        restWeb = WKWebView(frame: self.daview.bounds, configuration: configuration)
    

    Pero, el diseño automático está completa sólo cuando la vista se ha aparecido. Significa, de los límites (de sí mismo.daview.límites) que usted está tratando de utilizar en viewDidLoad, dar un valor incluso antes de que la vista de diseño.

    Solución: La correcta auto-layout-límites están disponibles en y después de viewDidAppear. Si usted mueve su código

    WKWebView(marco: sí.daview.los límites, la configuración: la configuración)

    de viewDidLoad() para viewDidAppear(), entonces todos tus deseos se harán realidad.

    • Esto funcionó para mí! Gracias sir
    • Esto va a funcionar, aunque no es de Diseño Automático. Usted debe ser capaz de configurar todo en viewDidLoad y agregar las restricciones y las limitaciones a que se ajustará en todos los elementos en la vista entran en la vista.
  2. 2
    1. Crear un método en el que el programa de instalación de 4 autodiseño de las restricciones de programación:

      -(void)setWebViewConstraints {
          [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.webView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.bottomLayoutGuide attribute:NSLayoutAttributeTop multiplier:1.0 constant:0]];
          [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.webView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0]];
          [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.webView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0]];
          [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.webView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0]];
      }
      
    2. Llamar a ese método en la viewDidAppear:

      -(void)viewDidAppear:(BOOL)animated {
      [super viewDidAppear:animated];
      [self setWebViewConstraints]; }
      
    • Esto no potencialmente agregar restricciones más de una vez?
  3. 2

    Utilizar WKWebView con autodiseño crear UIView en xib/storyboard editor, cambiar de clase a WKWebView. Agregar autodiseño constrints.
    En el método viewDidLoad quitar manualmente bandera translatesAutoresizingMaskIntoConstraints

    - (void) viewDidLoad
    {
       //...
        _webView.translatesAutoresizingMaskIntoConstraints = NO; //This is necessary!
       //...
    }
    
    //Addition for initialize WKWebView from StoryBoard.
    - (instancetype) initWithCoder:(NSCoder*)coder
    {
        UIView* view = [UIView.alloc initWithCoder:coder];
        ASSERT(view != nil);
        self = [self initWithFrame:view.frame configuration:WKWebViewConfiguration.new];
        return self;
    }
    
    • y cómo init WKWebView con WKWebViewConfiguration?
    • Gracias. La respuesta correcta. Aceptado respuesta es incorrecta debido a que el ajuste de marco es necesario durante el uso de diseño automático.
    • Me hizo actualizar el código para el placer
  4. 0

    Otro enfoque que le da la capacidad de utilizar el auto de diseño en IB para un WKWebView es arrastrar una colección vista en su ViewController. A continuación, cree un swift archivo para el UIViewController que se asocia con la Vista de Colección. Hay que poner todo su WKWebView código en este UIViewController. El uso de automóviles de diseño de la colección vista en cualquier lugar que usted necesita dentro de la UIViewController que la contiene.

Dejar respuesta

Please enter your comment!
Please enter your name here