2016-08-25 2 views
0

Ich versuche ein Bild mit einem gekachelten Muster zu erstellen, aber das gekachelte Bild scheint einen transparenten 1-Pixel-Rahmen zu haben. Selbst wenn ich nur ein weißes Hintergrundbild verwende, bekomme ich immer noch den transparenten Rahmen.colworWithPatternImage Rückgabe eines transparenten 1-Pixel-Rahmens

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]; 

Muster Bild pattern image

Fliesenbild mit transparentem 1px Grenze tiled image

Das Musterbild von Photoshop bikubische Resampling exportiert wurde, aber ich habe auch versucht, bilinear und nächste Nachbarn Methoden. Auch wenn ich das Bild als Muster in Photoshop verwende, bekomme ich den transparenten Rahmen nicht, was mich zu der Annahme verleitet, dass es iOS betrifft.

+0

Ist das tatsächlich das Musterbild, das Sie verwenden? Wie kommt es, dass es so groß ist? –

+0

Das weiße Musterbild musste nicht so groß sein, aber die Probe, die ich verwende, ist von ähnlicher Größe. Das gekachelte Bild wird verwendet, um einen Boden zu bilden, auf den eine perspektivische Transformation angewendet wird, so dass es ziemlich groß sein muss, um den Boden zu füllen. – WagglyWonga

+0

Der obige Code funktioniert gut für mich, was machst du sonst noch mit dem Bild und der Ansicht? z.B. Wie kommt es, dass in deinem zweiten Bild die gekachelten Bilder viel kleiner sind? –

Antwort

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; 
} 

Ich habe meine Hilfsmethode in meiner Frage enthalten, die die Kachelbild skaliert. Es war diese Methode, die mir das Problem gab. Wenn ich die Breite und Höhe um ein Pixel vergrößere, bekomme ich im zurückkommenden Bild nicht mehr den transparenten Rand.

-(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; 

} 
Verwandte Themen