colorWithPatternImage создает черные сетки в iphone 4 - PullRequest
1 голос
/ 02 октября 2011

У меня есть

UIView *topPart = [[UIView alloc] initWithFrame:CGRectMake(9, 0, 302, 318)];
topPart.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"pattern.png"]];
[someScroller addSubview:topPart];
[topPart release];

, и я хорошо вижу шаблон, когда использую 3GS или симулятор iphone, но когда я тестировал на реальном iPhone 4, я вижу изображения шаблона, но есть черныйлинии, разделяющие каждый шаблон, чтобы он выглядел как сетка.Я проверил изображение шаблона, и там нет черной рамки или чего-либо еще.

Был кто-то с другой проблемой, но это может быть то же решение colorWithPatternImage с iPhone 4 Retina Display (image@2x.png)

, но они предложили использовать- (void) drawRect: метод, единственная проблема в том, что я понятия не имею, как это сделать.

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 июня 2012

Я столкнулся с той же проблемой и обнаружил, что это связано с тем, что мой png был в оттенках серого (не RGB)

Чтобы проверить, так ли это, просто выберите изображение в Xcode, покажите боковую панель Utilitiesкоторый появляется справа) и посмотрите на цветовое пространство.

Чтобы исправить это, вы можете использовать свой любимый редактор изображений, но для фотошопа сделайте следующее: Откройте изображение в оттенках серого, выберите все и скопируйте. Создайте новый документ (но на этот раз убедитесь, что цветовое пространство RGB) Вставить

Надеюсь, это поможет:)

1 голос
/ 15 октября 2011

Я понял это, объединив ответы из этих 2 постов https://devforums.apple.com/message/259150#259150

Как я могу использовать CGContextDrawTiledImage для мозаичного изображения?

UIImage *thePattern= [self GetFineTiles:[UIImage imageNamed:@"Feedbackpattern.png"]];
theView.backgroundColor = [UIColor colorWithPatternImage:thePattern];

-(UIImage*)GetFineTiles:(UIImage*)badImage{
    UIGraphicsBeginImageContext(badImage.size);
    CGContextRef imageContext = UIGraphicsGetCurrentContext();
    CGContextDrawTiledImage(imageContext, (CGRect){CGPointZero,badImage.size}, badImage.CGImage);
    UIImage *goodPattern = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return goodPattern;
}

Надеждаэто помогает другим

...