Заголовок не отображается для пользовательского класса UIButton

ios swift uibutton

873 просмотра

4 ответа

1 Репутация автора

Я создал пользовательский класс 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
    }
}
Автор: basser Источник Размещён: 18.07.2016 11:47

Ответы (4)


0 плюса

1490 Репутация автора

Вы установили класс своего UIButton как свой собственный класс в раскадровке ??

Автор: Vishal Sonawane Размещён: 18.07.2016 12:00

0 плюса

2378 Репутация автора

Попробуй положить все вещи в 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)
    }


}
Автор: Bhadresh Mulsaniya Размещён: 18.07.2016 01:11

3 плюса

59 Репутация автора

У меня была та же проблема, этот ответ работал для меня: пользовательский подкласс UIButton не отображает заголовок

Добавьте super.layoutSubviews()после того, как вы переопределите функцию.

Автор: Corbin Hudson Размещён: 11.01.2018 01:50

0 плюса

381 Репутация автора

Вот рабочий код для 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
    }
}
Автор: iAmrSalman Размещён: 09.02.2018 11:58
Вопросы из категории :
32x32