【问题标题】:Title not showing for custom UIButton class自定义 UIButton 类的标题未显示
【发布时间】:2016-11-21 00:21:27
【问题描述】:

我创建了一个具有圆形框架的自定义 UIButton 类。问题是虽然我从故事板中设置了每个按钮的标题属性,但它们没有显示。我最终得到了圆形按钮,其中没有显示任何标题。我正在尝试做一个类似于默认 iOS 密码屏幕中的键盘。我的主视图背景颜色不是白色,并且我没有为按钮使用任何背景图像。这是我的自定义 UIButton 类的代码。

import Foundation
import UIKit

class MyOwnButton: UIButton {

    override init(frame: CGRect){
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func layoutSubviews() {
        self.clipsToBounds = true
        self.titleLabel?.font = UIFont.systemFontOfSize(33.0)
        self.titleLabel?.textColor = UIColor.whiteColor()
        self.layer.cornerRadius = self.frame.size.width / 2.0
        self.layer.borderColor = UIColor.whiteColor().CGColor
        self.layer.borderWidth = 2.0
    }
}

【问题讨论】:

    标签: ios swift uibutton


    【解决方案1】:

    这是 Swift 4

    的工作代码
    import UIKit
    
    class MyOwnButton: UIButton {
        override init(frame: CGRect){
           super.init(frame: frame)
    
            commonSetup()
        }
    
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
    
            commonSetup()
        }
    
        private func commonSetup() {
            self.clipsToBounds = true
            self.titleLabel?.font = UIFont.systemFont(ofSize: 33.0)
            self.titleLabel?.textColor = UIColor.white
            self.layer.cornerRadius = self.frame.size.width / 2.0
            self.layer.borderColor = UIColor.white.cgColor
            self.layer.borderWidth = 2.0
        }
    }
    

    【讨论】:

      【解决方案2】:

      有同样的问题,这个答案对我有用:Custom UIButton subclass not displaying title

      覆盖函数后添加super.layoutSubviews()

      【讨论】:

        【解决方案3】:

        尝试将所有东西放在init 方法中并检查。

        import Foundation
        import UIKit
        
        class MyOwnButton: UIButton {
        
            override init(frame: CGRect){
                super.init(frame: frame)
                self.clipsToBounds = true
                self.titleLabel?.font = UIFont.systemFontOfSize(33.0)
                self.titleLabel?.textColor = UIColor.whiteColor()
                self.layer.cornerRadius = self.frame.size.width / 2.0
                self.layer.borderColor = UIColor.whiteColor().CGColor
                self.layer.borderWidth = 2.0
            }
        
            required init?(coder aDecoder: NSCoder) {
                super.init(coder: aDecoder)
            }
        
        
        }
        

        【讨论】:

        • 没有任何按钮以这种方式出现在屏幕上:/
        【解决方案4】:

        您是否将 UIButton 的类设置为情节提要中的自定义类?

        【讨论】:

        • 是的。全部完成,如果我没有,我就不会看到圆形按钮。
        • @basser 尝试在代码中将其设置为 self.titleLabel?.text = "YOUR_TITLE"
        • 它不起作用 此外,它会将所有按钮命名为相同。我需要每个按钮有不同的标题,如 0,1,2,3...,9
        • @basser 那你为什么不写一个带参数的构造函数,它将字符串作为标题并设置它。
        • 我不是用代码创建按钮。我正在故事板上制作它们。我只是不明白为什么标题没有显示,即使我在情节提要中为每个按钮设置了标题。另外,如果我使用 self.setTitle("title", .Normal),它甚至不能在代码中工作
        猜你喜欢
        • 2020-06-29
        • 2015-01-07
        • 2014-09-01
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 2011-11-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多