Пользовательский рисунок поверх фонового изображения UIButton - PullRequest
5 голосов
/ 25 октября 2011

Какова последовательность вызова метода при рисовании UIButton?

У меня есть UIButton подкласс, назовем его UIMyButton. Я добавляю его в контроллер .xib и даю ему фоновое изображение. Затем в файле UIMyButton.m я переопределяю метод drawRect и рисую фигуру. Что-то вроде:

- (void)drawRect:(CGRect)rect {
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(c, [UIColor orangeColor].CGColor);
    CGContextFillRect(c, rect);
}

Проблема в том, что он рисует оранжевый прямоугольник под фоновым изображением. Какие методы отвечают за рисование / обновление фоновых изображений (например, обновление «нажатием»)? Как заставить рисовать сверху без добавления дополнительного пользовательского подпредставления к кнопке (или само фоновое изображение является подпредставлением)?

Я просто пытаюсь понять, как работает последовательность рисования UIButton.

1 Ответ

4 голосов
/ 05 октября 2012

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

-(void)drawRect:(CGRect)rect
{
    CGContextRef ctx=UIGraphicsGetCurrentContext();

    UIImage *image = [UIImage imageNamed:@"image.jpg"];
    [image drawInRect:self.bounds];

    CGContextSetFillColorWithColor(c, [UIColor orangeColor].CGColor);
    CGContextFillRect(c, rect); 
}
...