Получение размера UIView для программного добавления подпредставлений (с вычисленными X, Y, шириной и высотой) - PullRequest
0 голосов
/ 29 января 2020

В следующем случае у меня есть UIVIew, в котором есть ограничения, по которым он будет иметь тот же размер, что и экран сверху, слева и справа, а также кнопка снизу: enter image description here

Затем из ViewController я программно добавляю UIButtons следующим образом:

override func viewDidLoad() {
        super.viewDidLoad()

        drawCards()
    }


private func drawCards(){
        let deck = Deck()

        var rowIndex = 0
        var columnIndex = 0

        let cardWidth = Int(Float((deckView.bounds.width) / 7))
        let cardHeight = Int(Float(cardWidth) * 1.5)

        for card in deck.cards{
            let x = (cardWidth / 2) * columnIndex
            let y = cardHeight * rowIndex

            let button = CardButton()
            button.delegate = self
            button.setCard(card: card, x: x, y: y, width: cardWidth, height: cardHeight)

            deckView.addSubview(button)

            columnIndex += 1

            if(columnIndex == 13){
                columnIndex = 0
                rowIndex += 1
            }
        }
    }

Ожидаемое поведение - эта функция должна принимать размер UIView (называется deckView), вставьте UIButtons и расположите их друг над другом и последовательно располагайте одинаково между устройствами. Тем не менее, он выглядит так, как ожидалось, на iPhone, но не на iPad, как UIButtons go за пределами UIView: enter image description here

Это как для Я могу сказать, потому что значения X и Y не рассчитаны правильно, потому что ширина UIView (deckView) не получена правильно (или как ожидалось).

Почему ширина UIView получается не так, как ожидалось? (т.е. почему он работает, как и ожидалось, на iPhone, но не на iPad)

1 Ответ

1 голос
/ 29 января 2020

Переместите drawCards() с viewDidLoad на viewDidLayoutSuviews

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