I'm using colorWithPatternImage
to change text color of UITextView
. Its working fine in IO7 but not working in IO6.
Here is my Code :-
text.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ColorName.png"]];
I'm using colorWithPatternImage
to change text color of UITextView
. Its working fine in IO7 but not working in IO6.
Here is my Code :-
text.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ColorName.png"]];
The internals of UITextView
changed hugely between iOS 6 and 7. Before iOS7, UITextView didn't support pattern colours for the text colour. Several components gained support for pattern colours in iOS 7, and UITextView
was one of them.
Indeed, colorWithPatternImage
is not fit for your purposes in iOS 6. I would go for a solution that uses the text of the UITextView
as a mask. Check the answer by David to this question: Transparent UILabel textColor on superview.superview (sort of). He makes a path from the string he wants to see through and creates a mask out of it. For completeness check also iOS UIView subclass, draw see-through text to background.
Hope this helps
EDIT
Turns out it was not so easy to achieve the masking effect you are after with a UITextView in iOS 6. I have only managed to "emulate" the look of UITextView by doing the following to a 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];
Here is a sample image from that view
To have this view scrolling you would need to place it inside a UIScrollView.
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:self.view.frame];
// Setup tView as above
[scroll addSubview:tView];
[self.view addSubview:scroll];
If you follow this route you would need to play around with the scroll view and tView so that they look and behave like a UITextView.