Правильное использование UIGraphicsGetCurrentContext - PullRequest
0 голосов
/ 14 марта 2012

У меня есть UIView, в который я помещаю 3 подпредставления, все экземпляры одного и того же UIView, рядом друг с другом по горизонтали, заполняя каждое серым фоном. Я получил его на первый взгляд, но у меня проблемы со вторым. Вот код drawRect, который должен сделать трюк ..

- (void)drawRect:(CGRect)rect {
        // grab current graphics context
    CGContextRef g = UIGraphicsGetCurrentContext();

       // fill grey background
    CGContextSetRGBFillColor(g, (207.0/255.0), (207.0/255.0), 211.0/255.0, 1.0);
    CGContextFillRect(g, self.frame);

}

Итак, из моего контроллера представления я создаю первое подпредставление с frame.origin.x = 0 и добавляю его в мой основной вид, затем создаю второе с frame.origin.x, установленным на ширину первого и добавив его, то третий.

Первый вид заполняется правильно, но второй и третий имеют черный фон, как будто серой заливки не произошло. Я подозреваю, что это потому, что я не понимаю контекст для 2-го и 3-го подпредставлений.

Что мне нужно сделать, чтобы эта работа?

John

1 Ответ

3 голосов
/ 14 марта 2012

Это проблема геометрии - frame против bounds. Вы не хотите заполнять self.frame. Ваш drawRect должен быть:

- (void)drawRect:(CGRect)rect {
    // grab current graphics context
    CGContextRef g = UIGraphicsGetCurrentContext();

    // fill grey background
    CGContextSetRGBFillColor(g, (207.0/255.0), (207.0/255.0), 211.0/255.0, 1.0);
    CGContextFillRect(g, rect);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...