2012-06-04 2 views
0

Я делаю некоторые настройки и облицовочный спутаются UIGraphicGetCurrentContext()

CGContextRef context = UIGraphicsGetCurrentContext(); 

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

Edit:

Я спрашиваю, потому что я следую учебник по link1 и в link2 ...

Пожалуйста, посмотрите на контекст, когда мы имеем фона ячейки в красный цвет от link1 и заголовка в красном цвете также от link2.

Однако ширина это не то же самое, даже если они являются подклассами UIView и я получаю потерял, чтобы выяснить причину ...

ответ

0

Я не понимаю, что ваш вопрос, особенно когда Учебник 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: Только что заметил, что я ответил на другой ваш вопрос ранее сегодня ха-ха.