Я не понимаю, что ваш вопрос, особенно когда Учебник Raywenderlich излагает это очень четко.
CGContextRef context = UIGraphicsGetCurrentContext();
Дает вам текущее «холст», после чего вы просто измените состояние этого холста.
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef redColor =
[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0].CGColor;
CGContextSetFillColorWithColor(context, redColor);
CGContextFillRect(context, self.bounds);
Размер определяется, где вы вызываете функцию контекста прибудете, эта функция вызывается внутри метода пользовательского DrawRect, в соответствии с яблоками документы:
текущего графического контекста равна нулю по умолчанию , Перед вызовом метода drawRect: view, объекты просмотра вставляют действительный контекст в стек, делают его актуальным. Однако, если вы не используете объект UIView для выполнения вашего чертежа , вы должны вручную ввести действительный контекст в стек , используя функцию UIGraphicsPushContext.
Поэтому, когда передается self.bounds, используется размер элемента, который вызывает эту функцию.
Этот код может даже вызываться для разных ячеек разных размеров, поскольку каждая ячейка будет вызывать метод drawRect и получит соответствующий размер.
Возможно, ваше замешательство заключается в том, что они являются подклассами UIView, это не значит, что у них есть свойства «UIView» из представления в вашем раскадровке. Это означает, что они являются элементами, которые имеют ту же структуру, что и uiview (поэтому они могут вызывать drawRect), но вы будете расширяться или настраиваться для вашего желаемого поведения.
PD: Только что заметил, что я ответил на другой ваш вопрос ранее сегодня ха-ха.