В следующем случае у меня есть UIVIew
, в котором есть ограничения, по которым он будет иметь тот же размер, что и экран сверху, слева и справа, а также кнопка снизу: ![enter image description here](https://i.stack.imgur.com/iriTt.png)
Затем из 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](https://i.stack.imgur.com/1lE8k.png)
Это как для Я могу сказать, потому что значения X
и Y
не рассчитаны правильно, потому что ширина UIView
(deckView
) не получена правильно (или как ожидалось).
Почему ширина UIView
получается не так, как ожидалось? (т.е. почему он работает, как и ожидалось, на iPhone, но не на iPad)