Я столкнулся с подобной проблемой, когда имел фоновое изображение для UILabel, используя [UIColor colorWithPatternImage:]. Устройство под управлением 4.2.1 (iPhone 3G) отображало прозрачную часть изображения в черном цвете. Я попытался изменить непрозрачное свойство, а также установить изображение для слоя, но оба не работали.
Вместо этого я реализовал новый класс, наследующий UILabel, а в drawRect я просто рисую изображение:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
UIImage *image = [UIImage imageNamed:@"graphics/pricetag.png"];
CGContextDrawImage(context, rect, image.CGImage);
// Have UILabel draw the text
[super drawRect:rect];
}