Как проверить изображение на кнопке панели навигации, загруженной программно - PullRequest
0 голосов
/ 04 декабря 2018

Я загружаю кнопку на правой позиции навигации программно.Затем я вызываю функцию для проверки текущего изображения.Эта функция в основном включает вспышку, но некоторые из них не входят в условие if.мой код

 @objc func flashOnOff(sender: UIButton!) {
    print("Flash button press")
    //        let flashsetting = AVCapturePhotoSettings()
    guard (currentDevice?.isTorchAvailable)! else {return}


    do {
        try currentDevice?.lockForConfiguration()
        if flashButton.currentImage == UIImage(named: "FlashOffIcon.png")
        {

           flashButton.setImage(#imageLiteral(resourceName: "Flash On Icon").withRenderingMode(.alwaysOriginal), for: .normal)
            navigationItem.rightBarButtonItem = UIBarButtonItem(customView: flashButton)

            //            flashButton.clipsToBounds = true
            currentDevice?.torchMode = .on
            flashonindicator = 1
        }
        else
        {
            flashButton.setImage(#imageLiteral(resourceName: "FlashOffIcon").withRenderingMode(.alwaysOriginal), for: .normal)
            navigationItem.rightBarButtonItem = UIBarButtonItem(customView: flashButton)
            currentDevice?.torchMode = .off
            flashonindicator = 0
        }
    }
    catch{
        debugPrint(Error.self)
    }
}

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Насколько мне известно, вы не можете сравнивать два UIImage напрямую с оператором ==, попробуйте сделать это ниже приведенным способом, а затем проверьте, работает ли

var data1: Data? = UIImagePNGRepresentation(image1)
var data2: Data? = UIImagePNGRepresentation(image2)
0 голосов
/ 04 декабря 2018
guard (currentDevice?.isTorchAvailable)! else {return}

Всегда ли вводили в этом возврате?

Кстати, я предлагаю вам использовать эту охрану так:

guard 
   let currentDevice = currentDevice,
   currentDevice.isTorchAvailable
else {
    return
}

Тогда вы можете просто использовать константу currentDevice.XXX

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