UIBarButton渲染问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIBarButton渲染问题相关的知识,希望对你有一定的参考价值。

目前,当我使用一些自定义方法更改按钮图像的位置以将其移动到文本的右侧并添加一些填充时,我正在实现某种自定义UIBarButtonItem。但是,当我离开屏幕并返回按钮时,文本和图像会被切换和扭曲,如附图中所示。

enter image description here

enter image description here

第一张照片是当我离开屏幕时按钮看起来的方式,然后返回第二张照片是它最初的样子。我已经包含了uibarbuttonitem的代码,如果有人看到任何我没有引起这个渲染问题的东西我会非常感激。

import Foundation
import UIKit

class LocationManager: UIBarButtonItem {
    var viewController: MainViewController?

    lazy var customButton : UIButton = {
        let customButton = UIButton(type: .system)
        customButton.setImage(UIImage(named: "downArrow"), for: .normal)
        customButton.imageEdgeInsets = UIEdgeInsetsMake(0, 20, 0, -10)
        guard let customFont = UIFont(name: "NoirPro-SemiBold", size: 20) else {
            fatalError("""
        Failed to load the "CustomFont-Light" font.
        Make sure the font file is included in the project and the font name is spelled correctly.
        """
            )
        }
        customButton.semanticContentAttribute = UIApplication.shared
            .userInterfaceLayoutDirection == .rightToLeft ? .forceLeftToRight : .forceRightToLeft
        customButton.titleLabel?.font = customFont
        customButton.setTitleColor(UIColor.black, for: .normal)
        return customButton
    }()



    override init() {
        super.init()
        setupViews()
    }

    @objc func setupViews(){
        customView = customButton

    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}
答案

customView应该是UIView类型。我怀疑使用更高类型的UIButton会导致问题。在您的customView中,您需要将标题和图像设置为子视图并根据您的意愿进行约束。

以上是关于UIBarButton渲染问题的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButton 背景图片显示问题

无法将 UIBarButton 添加到导航栏

使用带有渲染功能的 Vue.js 3 片段

uibarbutton 项目未显示 uibutton

Spring boot:thymeleaf 没有正确渲染片段

带有 CustomView 和边框的 UIBarButton