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/