You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:01:05