InputAccessoryView外观动画卡顿闪烁问题求助
UIKit中Push带InputAccessoryView的控制器时出现闪烁Bug

可以看到,在动画到达最终位置前,视图会先出现闪烁,这个问题在真机上同样存在。
最初我以为是自定义InputAccessoryView的问题,但用仅设置红色背景的普通UIView测试后,确认这是UIKit的原生Bug。
以下是最小复现代码:
import UIKit class ViewController: UIViewController { lazy var pushViewControllerButton: UIButton = { let button = UIButton() button.translatesAutoresizingMaskIntoConstraints = false button.backgroundColor = .systemBlue button.setTitle("Push View Controller", for: .normal) button.addTarget(self, action: #selector(showViewController), for: .touchUpInside) return button }() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white setupConstraints() } private func setupConstraints() { view.addSubview(pushViewControllerButton) NSLayoutConstraint.activate([ pushViewControllerButton.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor), pushViewControllerButton.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor), pushViewControllerButton.heightAnchor.constraint(equalToConstant: 35) ]) } @objc private func showViewController() { let viewController = ViewControllerWithAccessoryView() navigationController?.pushViewController(viewController, animated: true) } } class ViewControllerWithAccessoryView: UIViewController { let accessoryView: UIView = { let view = UIView() view.backgroundColor = .systemRed view.frame.size.height = 80 return view }() override var inputAccessoryView: UIView? { return accessoryView } override var canBecomeFirstResponder: Bool { return true } override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white } }
内容的提问来源于stack exchange,提问作者adseeAnn
相关产品推荐
相关产品推荐

