Очередь рендеринга слоя iOS

Я столкнулся с поведением, которого пока не понимаю. Мой код в основном делает это:

  • Создайте представление с некоторым пользовательским содержимым UIView (представления с помощью drawRect), у этого представления еще нет суперпредставления, поэтому подсистема Quartz не вызывает его [отображение слоя].

  • Затем я делаю renderInContext представления.

  • Проблема в том, что иногда вьюшка рендерится идеально, а иногда не рендерит подвиды и не вызывает их drawRect.

Почему это происходит? Я что-то упускаю. Я действительно знаю, что один и тот же слой не может отображаться одновременно. Но это представление не отображается в основном потоке, поскольку у него нет суперпредставления.

Спасибо много


person Andrea Pezzino    schedule 15.01.2013    source источник
comment
Я думаю, что проблема связана с буфером Backing Store, но я не уверен.   -  person Andrea Pezzino    schedule 15.01.2013
comment
вам не нужен супервизор для рендеринга в основном потоке. Однако, если вы не находитесь в основном потоке, почти никакие операции UIView не будут работать должным образом.   -  person Max MacLeod    schedule 06.06.2013


Ответы (1)


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

  • добавить вид в супервизор, установив его альфа на 0
  • попробуйте добавить его за пределы супервизора
  • попробуйте вызвать -setNeedsDiplay в этом представлении

Я не знаю, работают ли они, система рендеринга - непростая задача, но я попробую. Одного я не понял, обычно подпредставления добавляются как подпредставления, но вы говорите, что что-то с ними делаете. внутри выдвижной ящик. Не добавляйте подпредставления в drawRect drawRect и addSubview: пользовательский рисунок влияет на то, какие представления ?

person Andrea    schedule 06.06.2013