2014-07-26 25 views
7

Sto usando colorWithPatternImage per cambiare il colore del testo di UITextView. Funziona bene in IO7 ma non funziona in IO6.colorWithPatternImage non funziona in io6?

Ecco il mio codice: -

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

Definire "non funzionante". – rmaddy

+0

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

+0

relativo allo sfondo del testo lo voglio su textColor. – iBhavin

risposta

6

Gli interni di UITextView cambiato enormemente tra iOS 6 e 7. Prima iOS7, UITextView non hanno sostenuto i colori del modello per il colore del testo. Diversi componenti hanno ottenuto il supporto per i colori dei pattern in iOS 7 e UITextView era uno di questi.

+0

colorWithPatternImage funziona con UITextView backgroundColor ma non funziona con textColor. – iBhavin

+1

Sì: molti componenti hanno supportato i colori del pattern per backgroundColor, ma non hanno ottenuto il supporto per questi colori come foreground fino a iOS 7. – Simon

+0

Esiste un'alternativa per esso? – iBhavin

0

Infatti, colorWithPatternImage non è adatto ai propri scopi in iOS 6. Vorrei provare una soluzione che utilizza il testo dello UITextView come maschera. Controlla la risposta di David a questa domanda: Transparent UILabel textColor on superview.superview (sort of). Fa un percorso dalla corda che vuole vedere e ne crea una maschera. Per completezza controllare anche iOS UIView subclass, draw see-through text to background.

Spero che questo aiuti

EDIT

scopre che non era così facile da ottenere l'effetto di mascheramento siete dopo con un UITextView in iOS 6. Sono riuscito solo per "emulare" il look di UITextView facendo seguito ad un UIView:

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

Ecco un'immagine di esempio da questo punto di vista

enter image description here

Per far scorrere questa vista è necessario posizionarla all'interno di UIScrollView.

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

Se si segue questo percorso si avrebbe bisogno di giocare con la vista di scorrimento e Tview in modo che sembrano e si comportano come un'UITextView.

+0

sì, può essere applicato a UILable come da ans ma non a UITextView.Voglio applicare questo in textColor. – iBhavin