Ios SFSafariViewController未全屏显示/顶部显示内容
我正在为一个演示制作一个非常简单的应用程序,并尝试使用Ios SFSafariViewController未全屏显示/顶部显示内容,ios,swift,sfsafariviewcontroller,Ios,Swift,Sfsafariviewcontroller,我正在为一个演示制作一个非常简单的应用程序,并尝试使用SFSafariViewController(我需要使用SF与WKWebView进行对比,以便能够访问cookies) 我真的很想为用户提供一些UI按钮,但我一直无法实现 我尝试了这个片段(放在presentViewController()的完成回调中): …在中概述。在他们的情况下,他们试图用一个小视图覆盖重新加载按钮。无论使用何种情况,对我来说,在加载SFSafariViewController时,视图立即消失(我可以看到它一会儿,然后它
SFSafariViewController
(我需要使用SF
与WKWebView
进行对比,以便能够访问cookies)
我真的很想为用户
提供一些UI按钮
,但我一直无法实现
我尝试了这个片段(放在presentViewController()
的完成回调中):
…在中概述。在他们的情况下,他们试图用一个小视图覆盖重新加载按钮。无论使用何种情况,对我来说,在加载SFSafariViewController
时,视图立即消失(我可以看到它一会儿,然后它消失)
我正在考虑在.OverContext
模式中显示按钮,但是用户将无法与SFSafariViewController
交互,这也不起作用
这里基本上是我想要的(请原谅粗俗的、快速的模型)…基本上是SafariViewController,上面有一个视图(见下图)…透明度只是为了显示它是在Safari上显示的)
非常感谢您的推荐。我想好了。。。可能存在一些轻微的竞争条件,阻止了推荐的“绘制矩形”代码按预期工作。我所做的:
- 子类
SFSafariWebViewController
- 在
中,使用绘制任何其他视图元素的viewdide
实现了轻微延迟NSTimer
import UIKit
import SafariServices
class MySafariVC: SFSafariViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var frame = self.view.frame
let OffsetY: CGFloat = 44
frame.origin = CGPoint(x: frame.origin.x, y: frame.origin.y - OffsetY)
frame.size = CGSize(width: frame.width, height: frame.height + (1 * OffsetY))
self.view.frame = frame
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "drawNavBar", userInfo: nil, repeats: false)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("i laid out my subviews")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
func drawNavBar() {
let height: CGFloat = 44
let y: CGFloat = self.view.frame.height - height
// It can be any overlay. May be your logo image here inside an imageView.
let overlay = UIView(frame: CGRect(x: 0, y: y, width: self.view.frame.width, height: height))
overlay.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.9)
self.view.addSubview(overlay)
}
}
Wkwebview对您隐藏cookies?
import UIKit
import SafariServices
class MySafariVC: SFSafariViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var frame = self.view.frame
let OffsetY: CGFloat = 44
frame.origin = CGPoint(x: frame.origin.x, y: frame.origin.y - OffsetY)
frame.size = CGSize(width: frame.width, height: frame.height + (1 * OffsetY))
self.view.frame = frame
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "drawNavBar", userInfo: nil, repeats: false)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("i laid out my subviews")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
func drawNavBar() {
let height: CGFloat = 44
let y: CGFloat = self.view.frame.height - height
// It can be any overlay. May be your logo image here inside an imageView.
let overlay = UIView(frame: CGRect(x: 0, y: y, width: self.view.frame.width, height: height))
overlay.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.9)
self.view.addSubview(overlay)
}
}