Saltar al contenido

SFSafariViewController: Ocultar barra de navegación

Este dilema se puede resolver de variadas maneras, sin embargo te compartimos la respuesta más completa en nuestra opinión.

Solución:

Pon este código en viewDidAppear:

let safariViewController = SFSafariViewController(URL: url)
presentViewController(safariViewController, animated: true) 
    var frame = safariViewController.view.frame
    let OffsetY: CGFloat  = 64
    frame.origin = CGPoint(x: frame.origin.x, y: frame.origin.y - OffsetY)
    frame.size = CGSize(width: frame.width, height: frame.height + OffsetY)
    safariViewController.view.frame = frame

Para ocultar la barra de estado, configure View controller-based status bar appearance a YES en su archivo info.plist e insértelo en su controlador de vista.

override func prefersStatusBarHidden() -> Bool 
    return true

Advertencia: Le sugiero que no use SFSafariViewController para la vista de pantalla completa porque no es posible recargar (ya que el botón de recarga está en UINavigationBar). En caso de que la solicitud falle, hará que la aplicación sea inútil. En su lugar, opte por WKWebView a pantalla completa con una barra de herramientas personalizada.

Actualizar: Para evitar ocultar el botón de recarga, simplemente agregue una vista/imagen Vista sobre el botón Listo en su SFSafariViewController y haga que el botón sea invisible o al menos no se pueda tocar.

presentViewController(svc, animated: true) 
    let width: CGFloat = 66
    let x: CGFloat = self.view.frame.width - width

    // It can be any overlay. May be your logo image here inside an imageView.
    let overlay = UIView(frame: CGRect(x: x, y: 20, width: width, height: 44))
    overlay.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.5)
    svc.view.addSubview(overlay)

El problema con este enfoque es que la superposición permanece en la pantalla, pero si puede encontrar una buena imagen para ella, estará bien.

Personalizar SafariViewController puede no ser una buena idea.

Las Directrices de Apple dicen claramente

SafariViewController debe usarse para presentar información de manera visible a los usuarios; el controlador no puede estar oculto u oscurecido por otras vistas o capas. Además, una aplicación no puede usar SafariViewController para rastrear a los usuarios sin su conocimiento y consentimiento.

Consulte:-https://developer.apple.com/app-store/review/guidelines/

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *