У меня есть экран с прокруткой. Внутри прокрутки есть подпредставление с кнопкой. Я хочу, чтобы при нажатии на кнопку в нижней части экрана добавлялось большее подпредставление с шириной, равной ширине экрана.
Сейчас я сталкиваюсь со следующими проблемами:
- Получение высоты экрана возвращает фактическую высоту просмотра прокрутки, но я не хочу этого, я хочу высоту экрана на устройстве, поскольку размещение подпредставления не зависит от просмотра прокрутки.
- При установке фрейма подпредставления, которое будет добавлено, если я введу координату x как 0, она ссылается на нее как координату w.r.t. подпредставление2, а не экран.
Обратитесь к изображениям, прилагаемым для большей ясности:
При нажатии кнопки 1 необходимо добавить Subview3.
РЕДАКТИРОВАТЬ 1: В subview2 я обрабатываю нажатие кнопки1. На клик я попробовал:
subview3.frame = CGRect(x: 0, y: UIScreen.main.bounds.height, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
self.view.addSubview(subview3)
subview3.expandFromBottom()
Затем в expandFromBottom () , у меня есть:
tableHeightConstraint?.constant = min(CGFloat(self.items.count) * self.itemHeight - 1, UIScreen.main.bounds.height)
print("before \(self.view.frame)")
print("before \(self.view.convert(view.frame.origin, to: UIApplication.shared.keyWindow))")
UIView.animate(withDuration: 0.5, animations: { [unowned self] () -> Void in
self.view.frame.origin.y -= (self.tableHeightConstraint?.constant)!
})
print("\(self.view.frame)")
print("\(self.view.convert(view.frame.origin, to: UIApplication.shared.keyWindow))")
Это напечатало следующее значение:
before (0.0, 0.0, 414.0, 736.0)
before (18.0, 860.0)
(0.0, -155.0, 414.0, 736.0)
(18.0, 550.0)
И subview3 не видно на экране.
Ранее я пытался указать 0 в качестве координаты y при добавлении подпредставления3, но это сделало вид видимым из исходных координат w.r.t подпредставления2. Кроме того, ранее я использовал UIApplication.shared.keyWindow, чтобы получить высоту экрана, и я возвращал высоту, включая высоту scrollview, но эта проблема, кажется, решается с помощью UIScreen.main.bounds.
PS: В expandFromBottom я пытаюсь добавить анимацию вида, появляющегося снизу экрана.
PS2: tableHeightConstraint для представления таблицы внутри подпредставления3