Альфа не работает над ярлыками и кнопками swift - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь использовать переходы постепенного исчезновения и постепенного исчезновения, когда любой контроллер присутствует и отклоняется. Для этого, когда новый контроллер присутствует, я устанавливаю альфа-значение всех компонентов / активов представления, таких как метка, кнопки et c равны нулю в viewDidLoad и представлении didAppear, я устанавливаю альфа ниже на 1. Удар - код i ' m, используя:

override func viewDidLoad() {
        super.viewDidLoad()
        imageView1.isHidden = true
        imageView2.isHidden = true
        self.setupScreen()
        setAssetsAlphaZero()
    }

    private func setupScreen() {
        switch loginVM.loginScreenType {
        case .resetPassword:
            presentResetPasswordScreen()
        default: break
        }
    }

    override func viewDidAppear(_ animated: Bool) {
           super.viewDidAppear(animated)
           animateAssetsWithIdentity()
       }

 func animateAssetsWithIdentity() {
        self.view.layoutIfNeeded()
        self.view.setNeedsDisplay()
        hideShowAssets(hidden: false)
        UIView.animate(withDuration: 0.5, animations: { [weak self] in
            self?.passwordTextField.alpha = 1
            self?.forgotPasswordButton.alpha = 1
            self?.emailTextField.alpha = 1
            self?.loginButton.alpha = 1
            self?.loginLbl.alpha = 1
            self?.emailImg.alpha = 1
            self?.emailLbl.alpha = 1
            self?.passwordImg.alpha = 1
            self?.passwordLbl.alpha = 1
            self?.signUpBtn.alpha = 1
            self?.view.layoutIfNeeded()
            self?.view.setNeedsDisplay()
        }) {[weak self] (complete) in
            self?.signUpBtn.isEnabled = true
            self?.view.layoutIfNeeded()
            self?.view.setNeedsDisplay()
        }
        self.enableDisableButton()
    }

    func setAssetsAlphaZero() {
        self.view.layoutIfNeeded()
        self.view.setNeedsDisplay()
        UIView.animate(withDuration: 0.5, animations: {[weak self] in
            self?.passwordTextField.alpha = 0
            self?.forgotPasswordButton.alpha = 0
            self?.emailTextField.alpha = 0
            self?.loginButton.alpha = 0
            self?.loginLbl.alpha = 0
            self?.emailImg.alpha = 0
            self?.emailLbl.alpha = 0
            self?.passwordImg.alpha = 0
            self?.passwordLbl.alpha = 0
            self?.signUpBtn.alpha = 0
            self?.view.layoutIfNeeded()
            self?.view.setNeedsDisplay()
        }) {[weak self] (complete) in
            self?.hideShowAssets(hidden: true)
            self?.signUpBtn.isEnabled = false
            self?.view.layoutIfNeeded()
            self?.view.setNeedsDisplay()
        }
    }

    func hideShowAssets(hidden : Bool ) {
        self.passwordTextField.isHidden = hidden
        self.forgotPasswordButton.isHidden = hidden
        self.emailTextField.isHidden = hidden
        self.loginButton.isHidden = hidden
        self.loginLbl.isHidden = hidden
        self.emailImg.isHidden = hidden
        self.emailLbl.isHidden = hidden
        self.passwordImg.isHidden = hidden
        self.passwordLbl.isHidden = hidden
        self.signUpBtn.isHidden = hidden
    }

И когда контроллер отклоняет, чем с помощью делегата, я уведомляю предыдущего контроллера.

@IBAction func signUpButtonTapped(_ sender: UIButton) {
        setAssetsAlphaZero()
        self.delegate?.dissmissVC()
        delay(0.5) {[weak self] in
            self?.dismiss(animated: false, completion: nil)
        }

    }

Чтобы представить контроллер, я использовал modalPresentationStyle = .overFullScreen, потому что мне нужен настоящее время мы должны быть прозрачными.

Пожалуйста, помогите мне.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 мая 2020

Не думаю, что вам нужно вызывать setNeedsDisplay. Потому что он будет реагировать на функцию drawRect, как упомянуто здесь. Также некоторые предложения, я думаю, что лучше вызвать setAssetsAlphaZero (), затем добавить задержку 0.5 se c, затем вызвать animateAssetsWithIdentity (). Надеюсь, это полезно

Когда мне нужно вызвать setNeedsDisplay в iOS?

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