Создайте больший UIView из меньшего UIView Swift - PullRequest
0 голосов
/ 09 января 2019

У меня есть экран с прокруткой. Внутри прокрутки есть подпредставление с кнопкой. Я хочу, чтобы при нажатии на кнопку в нижней части экрана добавлялось большее подпредставление с шириной, равной ширине экрана.

Сейчас я сталкиваюсь со следующими проблемами:

  1. Получение высоты экрана возвращает фактическую высоту просмотра прокрутки, но я не хочу этого, я хочу высоту экрана на устройстве, поскольку размещение подпредставления не зависит от просмотра прокрутки.
  2. При установке фрейма подпредставления, которое будет добавлено, если я введу координату x как 0, она ссылается на нее как координату w.r.t. подпредставление2, а не экран.

Обратитесь к изображениям, прилагаемым для большей ясности: Before button click

After Button Click

При нажатии кнопки 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

...