Название пользовательской кнопки не отображается на iPad - PullRequest
0 голосов
/ 26 января 2019

У меня есть пользовательская кнопка, ее название видно на iPhone, но не видно на iPad. Этот маленький значок и нижняя граница также видны. Действие кнопки работает. Не уверен, почему название не отображается на iPad. Как мне отладить его, чтобы выяснить проблему?

Я запускаю его на симуляторе.

Следующий код:

import Foundation
import UIKit

class DropDownButton: UIButton {

    var bottomBorder = UIView()

    enum ImageType: String {
        case grey = "Icons/DropDown/Grey"
        case white = "Icons/DropDown/White"
        case red = "Icons/DropDown/red"

        var image: UIImage? { return UIImage(named: rawValue) }
    }

    var imageType: ImageType = .grey {
        didSet{
            setImage(imageType.image, for: [])
        }
    }

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

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

    override func awakeFromNib() {
        super.awakeFromNib()

        // Setup Bottom-Border
        self.translatesAutoresizingMaskIntoConstraints = false

        bottomBorder = UIView.init(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
        bottomBorder.backgroundColor = .lightGreyColour
        bottomBorder.translatesAutoresizingMaskIntoConstraints = false

        addSubview(bottomBorder)

        bottomBorder.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
        bottomBorder.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
        bottomBorder.rightAnchor.constraint(equalTo: rightAnchor).isActive = true
        bottomBorder.heightAnchor.constraint(equalToConstant: 1).isActive = true // Set Border-Strength

        self.sizeToFit()
        self.setImage(UIImage(named: "Icons/DropDown/Grey"), for: [])
        self.imageEdgeInsets = UIEdgeInsets(top: 0, left: UIScreen.main.bounds.size.width-imageView!.frame.width-16, bottom: 4.0, right: 0)
        self.titleEdgeInsets = UIEdgeInsets(top: 0, left: -imageView!.frame.width, bottom: 0, right: imageView!.frame.width)
        self.setTitleColor(.white, for: .normal)
        self.setTitleColor(.greyColour, for: .disabled)
    }

}


class ViewController: UIViewController {

    @IBOutlet weak var sortButton: DropDownButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.sortButton.setTitleAndColour(title: "Most Recent", titleFont: fontBody!, colour: .white)
        self.sortButton.imageType = .white
        self.sortButton.bottomBorder.backgroundColor = .white
    }
}

Похоже, что ограничения не принимаются на iPad, прикреплен скриншот

enter image description here

1 Ответ

0 голосов
/ 26 января 2019

Вы можете использовать опцию debug view hierarchy в Xcode для просмотра представлений, составляющих ваш контроллер представлений. Визуальный отладчик поможет вам увидеть, где находится SortedButton.

debug view hierarchy

Затем вы можете просмотреть иерархию представлений, найти представление SortedButton и посмотреть на ограничения, установленные для кнопки. Вы также можете использовать кнопки show object inspector и show size inspector в Inspectors Panel для просмотра дополнительной информации о кнопке.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...