Высота UINavigationController равна нулю при встраивании в качестве контроллера детского представления

Уже есть много отличных ответов, но позвольте мне привести вам один пример:

У меня есть простой класс Item:

 class Item
    {
    public: 
      std::string name;
      int weight;
      int price;
    };

Я делаю вектор, чтобы держать связку из них.

std::vector inventory;

Я создаю один миллион объектов предметов и выталкиваю их обратно на вектор. Я сортирую вектор по имени, а затем выполняю простой итеративный двоичный поиск определенного имени элемента. Я тестирую программу, и для завершения выполнения требуется более 8 минут. Затем я меняю свой инвентарный вектор так:

std::vector inventory;

... и создаю миллион объектов объекта через new. ТОЛЬКО изменения, которые я делаю для моего кода, - это использовать указатели на Элементы, за исключением цикла, который я добавляю для очистки памяти в конце. Эта программа работает менее чем за 40 секунд или лучше, чем 10-кратное увеличение скорости. EDIT: код находится в http://pastebin.com/DK24SPeW . При оптимизации компилятора он показывает только увеличение на 3,4 раза на машине, на которой я только что протестировал ее, что по-прежнему значительно.

0
задан fl034 13 July 2018 в 08:34
поделиться

1 ответ

// Устанавливаем только верхние, левые, правые анкеры, чтобы представление не сжималось при выдвижении вверх

controller.view.leftAnchor.constraint(equalTo: bottomSheetViewContainerView.leftAnchor).isActive = true
controller.view.rightAnchor.constraint(equalTo: bottomSheetViewContainerView.rightAnchor).isActive = true
controller.view.topAnchor.constraint(equalTo: bottomSheetViewContainerView.topAnchor).isActive = true

Вы должны добавить нижнее> = 0 ограничение

и удалить

bottomSheetViewContainerView.heightAnchor.constraint(equalToConstant: controller.view.bounds.height).isActive = true

Если ограничения в представлении контроллера правильны, он должен работать.

0
ответ дан iOS 17 August 2018 в 13:20
поделиться
  • 1
    Я думаю, вам нужно добавить эту строку кода controller.view.translatesAutoresizingMaskIntoConstraints = false – iOS 13 July 2018 в 08:50
  • 2
    Я пробовал это, но он тоже не работает. Я получаю тонны ломающихся лог-сообщений. Но они не появляются, когда контроллер напрямую добавляется с моим кодом выше и не встроен в контроллер навигации. Поэтому мой контроллер должен быть в порядке – fl034 13 July 2018 в 09:11
  • 3
    @iOS я уже получил эту строку внутри своего кода:] – fl034 13 July 2018 в 09:11
Другие вопросы по тегам:

Похожие вопросы: