У меня есть представление с несколькими подпредставлениями. Все подпредставления имеют ограничения по размеру, встроенные в раскадровку.
часть viewDidLoad () предназначена для программного добавления ряда кнопок. И я использую границы подпредставления, чтобы знать, где добавить кнопки, чтобы занять доступную экранную недвижимость. В качестве упрощенного примера:
override func viewDidLoad()
{
super.viewDidLoad()
let bottom = buttonView.bounds.maxY
let right = buttonView.bounds.maxX
let button = UIButton()
button.frame = CGRect(x: CGFloat(0.0),
y: CGFloat(0.0),
width: CGFloat(right),
height: CGFloat(bottom))
button.addTarget(self, action: #selector(buttonPushed(_:)), for: .touchUpInside)
buttonView.addSubview(button)
print("buttonview frame = \(buttonView.frame)")
}
override func viewWillAppear()
{
super.viewWillAppear()
print("buttonview frame = \(buttonView.frame)")
}
То, что я вижу в симуляторе (и на оборудовании), состоит в том, что все представления имеют размеры в соответствии с тем, как я их спроектировал в раскадровке, в соответствии с оборудованием, которое я спроектировал это на (iPhone 11). Когда я запускаю его на iPhone 8, все мои подпредставления запускаются за пределами экрана, и первая инструкция print указывает ширину 414.0. Ограничения применяются где-то до viewWillAppear
, а второй оператор печати указывает ширину 375,0. Но моя кнопка не изменена, чтобы соответствовать. Это все еще продолжается за пределами экрана.
Как программно добавить мои подпредставления кнопок (в этом примере только 1, код имеет 20, встроенный в al oop), чтобы придерживаться ограничений границ суперпредставления, после того, как Я знаю, что они на самом деле?