Кварц 2D drawRect метод (iPhone)

На данный момент невозможно завершить его за один звонок.

Как уже упоминалось, наименьший шаг вызова - создать скрипт для получения всех репозиториев (сохранить репозитории в переменной), а затем в цикле использовать az acr repository show-tags для получения их тегов.

Те же сценарии, что и удар:

result="$(az acr repository list -n ACR_name --output tsv)"

for i in $result; do az acr repository show-tags -n ACR_name --repository $i; done

Результат теста, как показано ниже:

enter image description here

32
задан Brad Larson 21 October 2011 в 19:30
поделиться

3 ответа

drawRect () потянет к внеэкранному буферу. Вы не должны перерисовывать время, регионы "повреждены" серовато-синие, поскольку iPhone OS заботится об обработке разделения на уровни представлений. Вы просто пишете однажды в буфер и позволяете ОС обработать остальных. Это не похоже на другие среды программирования, где необходимо продолжать перерисовывать каждый раз, когда что-то передает по представлению.

4
ответ дан 27 November 2019 в 20:59
поделиться

Всегда будьте готовы потянуть соответствующую область своего представления когда drawRect: назван.

Хотя система может буферизовать Ваше представление, которое только избежит drawRect: от того, чтобы быть вызванным. Если по некоторым причинам, система должна делать недействительным буфер, Ваш drawRect: метод может быть вызван снова. Кроме того, drawRect: будет вызван для различных областей Вашего представления, поскольку они становятся видимыми в результате прокрутки и других операций, которые влияют на видимость областей Вашего представления.

2
ответ дан 27 November 2019 в 20:59
поделиться

Часть беспорядка между различными ссылками Какао прибывает из введения поддержанных слоем представлений в Leopard. На iPhone поддерживаются слоем все UIViews, где в Leopard представления должны вручную включить поддержку слоя.

Для поддержанного слоем представления содержание оттянуто однажды использующий независимо от того, что Вы предоставили в drawRect(), но затем буферизуется на слой. Слой действует как прямоугольная структура, поэтому когда Вы перемещаете поддержанное слоем представление или покрываете его, никакая перерисовка не необходима, структура просто перемещена в то местоположение через GPU. Если Вы не устанавливаете needsDisplayOnBoundsChange property кому: YES для слоя, изменяя размер слоя (или его содержание представления) будет просто масштабировать содержание. Это может привести к расплывчатой графике в рамках Вашего представления или слоя, таким образом, можно хотеть вызвать перерисовку в этом случае. setNeedsDisplay инициирует ручную перерисовку контента представления или слоя и последующее перекэширование того содержания в слое.

Для оптимальной производительности предложено постараться не иметь частые вызовы к drawRect, потому что Кварцевый рисунок и перекэширование в слое являются дорогими операциями. Лучше пытаться сделать анимацию с помощью отдельных слоев, которые можно переместить или масштабировать.

Основанные на какао ссылки Вы видели, что касаются рабочего стола, могут принять представления non-layer-backed, которые действительно называют drawRect: любое время представление должно быть обновлено, является ли это от перемещения, масштабирования или наличия части затененного представления. Как я сказал, все UIViews поддерживаются слоем, так дело обстоит не так на iPhone.

Тем не менее для Вашего приложения рисунка, один способ сделать это состоял бы в том, чтобы поддержать массив рисованных объектов и назвать drawRect: каждый раз пользователь добавляет что-то новое, выполняя итерации по каждому из ранее рисованных объектов в порядке. Я мог бы предложить альтернативный подход, где Вы создаете новый UIView или CALayer для каждой операции рисования. Контент той операции рисования (строка, дуга, X, и т.д.) был бы оттянут отдельным представлением или слоем. Тем путем Вы не должны будете перерисовывать все на новом касании, и Вы смогли делать некоторое аккуратное редактирование векторного стиля путем перемещения каждого из оттянутых элементов вокруг независимо от других. Для сложных рисунков мог бы быть определенный компромисс памяти в этом, но я держал пари, что он будет иметь намного лучшую производительность рисунка (минимальное использование ЦП и мерцание).

38
ответ дан 27 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

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