2016-08-25 4 views
0

Я пытаюсь создать изображение с черепичным рисунком, но черепичное изображение, похоже, имеет прозрачную границу 1 пиксель. Даже когда я использую только изображение на белом фоне, я все еще получаю прозрачную рамку.colworWithPatternImage возвращает прозрачную рамку с 1 пикселем

UIImage *patternImage=[UIImage imageNamed:@"whiteimage.png"]; 
CALayer *layer=[[CALayer alloc] init]; 
layer.frame=CGRectMake(0, 0, 2048, 1536); 
layer.backgroundColor=[UIColor colorWithPatternImage:patternImage].CGColor; 
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0,0,2048,1536)]; 
[view setOpaque:YES]; 
[view.layer addSublayer:layer]; 

Pattern Image pattern image

Изображение с прозрачным 1px границами tiled image

Узора изображение было экспортировано из Photoshop с помощью бикубических передискретизаций, но я также попытался билинейным и ближайшие соседи методы Плиточного. Также, если я использую изображение как образец в Photoshop, я не получаю прозрачную рамку, которая заставляет меня думать, что это связано с iOS.

+0

Это на самом деле образец изображения, который вы используете? Почему он так велик? –

+0

Изображение с белым рисунком не должно быть таким большим, но образец, который я использую, имеет такой же размер. Черепичное изображение используется для формирования пола, на котором оно имеет перспективное преобразование, применяемое к нему, поэтому оно должно быть достаточно большим для заполнения пола. – WagglyWonga

+0

Вышеприведенный код отлично подходит для меня, что еще вы делаете с изображением и просмотром? например Как получается, что на втором изображении черепичные изображения намного меньше? –

ответ

0
-(UIImage*) resizeImage:(UIImage*)image newSize:(CGSize)newSize 
{ 
     UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
     [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext();  
     return newImage; 
} 

Я забыл включить мой вспомогательный метод в свой вопрос, который масштабирует изображение плитки. Именно этот метод дал мне проблему. Когда я увеличиваю ширину и высоту пикселя, я больше не получаю прозрачную рамку в возвращенном изображении.

-(UIImage*) resizeImage:(UIImage*)image newSize:(CGSize)newSize 
{ 
     UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
     [image drawInRect:CGRectMake(0, 0, newSize.width+1, newSize.height+1)]; 
     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext();  
     return newImage; 

} 
Смежные вопросы