Снимок экрана показывает панель инструментов на устройстве, но не на симуляторе - PullRequest
0 голосов
/ 07 июня 2019

У меня есть панель инструментов, которая была создана на viewDidLoad поверх webkit.Когда я делаю снимок на симуляторе, отсутствует панель инструментов, чего я и хотел бы.При сборке на устройстве панель инструментов есть.

Я пытался скрыть панель инструментов с помощью:

toolbar.isHidden = true

, но приложение вылетает с панелью инструментов равной нулю.Если я изменю его на:

toolbar?.isHidden = true

Он все равно обнаруживается, считая, что все еще думает, что он равен нулю.

Панель инструментов настроена на viewDidLoad путем вызова другой функции:

var toolbar : UIToolbar!

override func viewDidLoad() {
        super.viewDidLoad()
        setUpToolBar()
}

func setUpToolBar() {
        let saveButton = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(takeScreenshot))
... 
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 300, width: 200, height: 50)) 
        toolbar.setItems([saveButton,flexibleSpaceFillerLeft,userAgentButton,flexibleSpaceFillerRight,doneButton], animated: true)

        view.addSubview(toolbar)
}

Код для моего снимка приведен ниже.Именно здесь я пытался скрыть панель инструментов, прежде чем делать снимок.

   @objc func takeScreenshot() {

        webView.takeSnapshot(with: nil, completionHandler: { (image,error) in
            if let image = image {
                self.screenshotOfWindow = image
                self.showScreenshotEffect()
                self.saveAllData()
            } else {
                print (error?.localizedDescription as Any)
            }
        })
    }

Вот экран, на котором мне нужно сделать снимок экрана:

screenshot

Красное поле на скриншоте - это полоса, которая мне нужна, чтобы исчезнуть со скриншота.

Я бы хотел сделать снимок экрана без нижней панели.Как было сказано ранее, это работает в симуляторе, но устройство всегда показывает полосу.В верхней части скриншота также есть пробел в «контроллере навигации», так как верхняя панель сверху покрывает часть экрана, но это просто пустое место, к которому я могу обратиться позже.

1 Ответ

0 голосов
/ 08 июня 2019

Я просто хотел вернуться и ответить, как я решил это. Веб-представление встроено в контроллер навигации, но я создавал панель инструментов программно в viewDidLoad, вызывая функцию setupToolBar, которую я создал в начале проекта. Я мог скрыть панель инструментов, но она все еще была захвачена во время снимка экрана. Я закомментировал весь этот код и вместо этого использовал панель инструментов контроллера навигации. Теперь, когда я делаю снимок экрана, нижняя и верхняя панель контроллера навигации не являются частью снимка экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...