2014-07-26 22 views
7

Ich verwende colorWithPatternImage, um die Textfarbe UITextView zu ändern. Es funktioniert gut in IO7, funktioniert aber nicht in IO6.colorWithPatternImage funktioniert nicht in io6?

Hier ist mein Code: -

text.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ColorName.png"]]; 
+1

Definieren Sie "nicht funktioniert". – rmaddy

+0

http://stackoverflow.com/questions/9609688/ios-5-1-uicolor-colorwithpatternimage-background-color-draws-solid-black –

+0

es über Texthintergrund ich will es auf textColor. – iBhavin

Antwort

6

Die Interna von UITextView verändert enorm zwischen iOS 6 und 7. Vor iOS7, UITextView nicht Musterfarben für die Textfarbe unterstützen. Mehrere Komponenten erhielten Unterstützung für Musterfarben in iOS 7, und UITextView war einer von ihnen.

+0

colorWithPatternImage arbeitet mit UITextView backgroundColor, arbeitet aber nicht mit textColor. – iBhavin

+1

Ja - viele Komponenten unterstützten Musterfarben für backgroundColor, aber sie haben keine Unterstützung für sie als Vordergrundfarben bis iOS 7. – Simon

+0

Gibt es eine Alternative dafür? – iBhavin

0

In der Tat ist colorWithPatternImage nicht für Ihre Zwecke in iOS 6 geeignet. Ich würde für eine Lösung gehen, die den Text der UITextView als Maske verwendet. Überprüfen Sie die Antwort von David auf diese Frage: Transparent UILabel textColor on superview.superview (sort of). Er macht einen Weg von der Schnur, durch die er sehen will, und erschafft daraus eine Maske. Zur Vollständigkeitsprüfung auch iOS UIView subclass, draw see-through text to background.

this helps

EDIT

Stellt sich heraus, es ist nicht so einfach war, den Maskierungseffekt Sie nach einer UITextView in iOS zu erreichen 6. ich nur geschafft haben, zu „emulieren“ das Aussehen von UITextView durch die folgenden zu einem UIView tun:

UIView *tView = [[UIView alloc] initWithFrame:self.view.frame]; 

tView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"pattern.jpg"]]; 

NSString *text = @"Lorem ipsum..."; 

CATextLayer *mask = [CATextLayer layer]; 

mask.frame = frame; 

mask.backgroundColor = [UIColor colorWithWhite:0 alpha:0].CGColor; 
mask.foregroundColor = [UIColor colorWithWhite:0 alpha:1].CGColor; 
mask.string = text; 
mask.wrapped = YES; 
mask.fontSize = 25; 

tView.layer.mask = mask; 

[self.view addSubview:tView]; 

Hier ist ein Beispielbild aus dieser Ansicht

enter image description here

Um diese Ansicht scrollen zu lassen, müssen Sie sie in einem UIScrollView platzieren.

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:self.view.frame]; 
// Setup tView as above 
[scroll addSubview:tView]; 
[self.view addSubview:scroll]; 

Wenn Sie diesen Weg folgen würden Sie müssen mit dem Scroll-Ansicht spielen, um und TView so dass sie wie ein UITextView aussehen und sich verhalten.

+0

Ja, es kann auf UILable gemäß diesem ans, aber nicht auf UITextView.Anwender dies in textColor anwenden. – iBhavin