как сделать выпадающую ячейку с перекрытием uiview - PullRequest
0 голосов
/ 25 марта 2020

У меня есть пользовательская настройка кнопок программно, более похожая на упаковку uiview с UIButton, когда я касаюсь ее, показываю список имен. и проблема в моем контроллере вида под пользовательской кнопкой есть пользовательский интерфейс, когда я пытаюсь нажать на кнопку. мой список находится за uiview. как я могу сделать, чтобы список закончился через uiview, это мой пользовательский интерфейс и мои настройки кода.

см. список приветствий и мира, но мир покрыт uiview.

listdropdown

Это мой код настройки

    class AddScheduleViewController: UIViewController {

    let containerTitle      = GView(bgColor: .white, radius: 0)
    let headerView          = HeaderView()

    let scrollView: UIScrollView = {
        let scrollView = UIScrollView()
        scrollView.backgroundColor = .white
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        return scrollView
    }()

    var chooseScheduleDropDown = GDropdownSchedule(type: .system)
}

    override func viewDidLoad() {
        super.viewDidLoad()

        chooseScheduleDropDown = GDropdownSchedule.init(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
        chooseScheduleDropDown.dropView.options = ["Hello", "World"]
        configure()
    }

    private func configure() {
        view.addSubview(containerTitle)
        containerTitle.layer.cornerRadius = 10
        containerTitle.clipsToBounds = true
        containerTitle.anchor(top: view.safeAreaLayoutGuide.topAnchor, trailing: view.safeAreaLayoutGuide.trailingAnchor, bottom: view.safeAreaLayoutGuide.bottomAnchor, leading: view.safeAreaLayoutGuide.leadingAnchor, topPadding: 16, rightPadding: 19, bottomPadding: 16, leftPadding: 19, width: 0, height: 0)

        containerTitle.addSubview(headerView)
        headerView.anchor(top: containerTitle.topAnchor, trailing: containerTitle.trailingAnchor, bottom: nil, leading: containerTitle.leadingAnchor, topPadding: 0, rightPadding: 0, bottomPadding: 0, leftPadding: 0, width: 0, height: 53)

        containerTitle.addSubview(scrollView)
        scrollView.anchor(top: headerView.bottomAnchor, trailing: containerTitle.trailingAnchor, bottom: containerTitle.bottomAnchor, leading: containerTitle.leadingAnchor, topPadding: 8, rightPadding: 8, bottomPadding: 8, leftPadding: 8, width: 0, height: 0)

        [chooseScheduleDropDown, entryView, chooseDateView, chooseClass, startTimeView, endTimeView, descriptionView, saveBtn].forEach {
            v in
            v.translatesAutoresizingMaskIntoConstraints = false
            scrollView.addSubview(v)
        }

    NSLayoutConstraint.activate([

            chooseScheduleDropDown.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
            chooseScheduleDropDown.topAnchor.constraint(equalTo: scrollView.topAnchor),
            chooseScheduleDropDown.widthAnchor.constraint(equalToConstant: 285),
            chooseScheduleDropDown.heightAnchor.constraint(equalToConstant: 60),

            entryView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
            entryView.topAnchor.constraint(equalTo: chooseScheduleDropDown.bottomAnchor, constant: topPadding),
            entryView.widthAnchor.constraint(equalToConstant: 285),
            entryView.heightAnchor.constraint(equalToConstant: 60)
    ])
}

1 Ответ

1 голос
/ 25 марта 2020

Предполагая, что ваш "список" является подклассом UIView (или табличным представлением, как угодно), и он также был добавлен как подпредставление вашего scrollView, вы можете представить его перед другими подпредставлениями с помощью:

scrollView.bringSubviewToFront(entryView)

В качестве примечания, пара советов:

  • Попробуйте начать с простых элементов.

    • Использовать обычный UIView объект (дайте им разные цвета фона), чтобы у вас было меньше кода для работы.
    • После того, как вы выполнили задачу по основам c, добавьте свои "пользовательские" элементы.
  • Задавая вопросы здесь, в StackOverflow,

    • Попробуйте включить достаточно кода, чтобы кто-то мог скопировать / вставить и запустить его, чтобы выяснить, что происходит. Например, никто не может знать, каковы ваши объекты GView, HeaderView и GDropdownSchedule.
    • Старайтесь избегать таких вещей, как расширение .anchor(). Довольно сложно прокрутить все параметры по горизонтали (одна из ваших строк имеет длину 308 символов), чтобы понять, какие ограничения устанавливаются.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...