Настраиваемая производительность пользовательского интерфейса

#ios #swift #performance #uiview

#iOS #быстрый #Производительность #пользовательский интерфейс

Вопрос:

Я создаю пользовательский UIView и делаю все в draw(_ rect: CGRect) методе. Также там я хочу добавить новое представление, вызвав self.addSubView метод, с добавлением ограничений и средств распознавания жестов.

Я думаю о производительности, нормально ли делать все это в draw(_ rect: CGRect) методе.

Спасибо.

Комментарии:

1. Почему вы создали 3 одинаковых потока? Ошибка или что? 🙂 Удачи с вашим вопросом, хотя

Ответ №1:

можно ли делать все это в draw(_ rect: CGRect) методе

Абсолютно нет. Это не имеет ничего общего с производительностью; это связано с тем, что draw означает. Это означает рисование. Единственное, что вы должны когда-либо делать в draw , это давать команды рисования, чтобы рисовать в графическом контексте, который был передан для вас.

Другая проблема заключается в том, что draw может вызываться много-много раз за время существования представления, но добавление ограничений и средств распознавания жестов — это то, что вы хотите сделать только один раз.

Если вы хотите добавить ограничения и средства распознавания жестов, сделайте это в подходящее время, например, когда представление помещается в его супервизор или когда макет вот-вот произойдет.

Комментарии:

1. Я не думаю, что он собирается добавлять распознаватели жестов или другие вещи в draw

2. @Zich Я думаю, это именно то, что он собирается сделать. Ошибочно.

3. если он собирается добавлять туда нерелевантные коды, я полностью согласен с вами.

4. Спасибо за ваш ответ. Итак, мне нужно перенести добавление средств распознавания жестов в другое место (которое лучше), но создание представления и добавление ограничений — это нормально, верно?

5. Создающих ограничений также не должно быть, проверьте layoutSubViews

Ответ №2:

Пользовательское рисование в переопределенном draw методе само по себе не создает проблемы с производительностью. Однако реализация неаккуратного метода рисования приведет к этому.

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