Zasadniczo działa, ponieważ maszyna, która ustawia kontekst graficzny do rysowania, itp., Nie jest zgodna z implementacją UIView
implementacji (która jest pusta).
że maszyna ma żyć gdzieś, oczywiście, udawajmy w każdym UIView istnieje jakiś wewnętrzny metoda jak this-- nazw metod, funkcji i właściwości są wymyślone, aby chronić niewinnych:
- (void)_drawRectInternal:(CGRect)rect
{
// Setup for drawing this view.
_UIGraphicsContextPushTransform(self._computedTransform);
// Call this object's implementation of draw (may be empty, or overridden).
[self drawRect:rect];
// draw our subviews:
for (UIView * subview in [self subviews]) {
[subview _drawRectInternal:rect];
}
// Teardown for this view.
_UIGraphicsContextPopTransform();
}
To jest czystszy sposób budowania struktur niż poleganie na subklasserze, aby zrobić coś właściwego we wspólnym zastąpieniu, gdy złagodzenie byłoby wynikiem bardzo zagadkowego złego zachowania. (I nie byłoby to w ogóle możliwe, ponieważ losowanie może wymagać konfiguracji i przerwania).
Awesome. Dzięki! – wakeup