iOS Layer Rendering Queue

Попаднах на поведение, което все още не разбирам. Моят код основно прави това:

  • Създайте изглед с малко персонализирано съдържание на 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