我希望在用户选择此按钮后,使用一些文本和一个按钮创建一个UITextView
按钮,在修复时间后逐字地隐藏文字UITextView
。我该怎么做?
在第一张图片中,所有单词都存在,但是在第二个屏幕中,在一段时间之后逐字逐句删除,我正在使用计时器和调用方法
firststring = myArray[countNew];
NSRange range=[self.textView.text rangeOfString:firststring];
[stringWithRTFAttributes addAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} range:range];
[self.textView setAttributedText:stringWithRTFAttributes];
countNew++;
if(countNew>=count)
{
[timer invalidate];
NSLog(@"Timer Stops");
}
其中count是存储总字数的数组,countNew是整数变量。
答案 0 :(得分:2)
您可以使用NSMutableAttributedString
并将特定字词的文字颜色更改为clearColor
或backgroundColor
。 NSTimer
是一个很好的方法。
举个例子:
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Dummy String" attributes:@{NSForegroundColorAttributeName: [UIColor blackColor]}];
[string addAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} range:{range of substring}];
对于多次出现的子字符串,您可以采用这种方法:
NSString *string = @"Dummy String";
NSArray *words = [string componentsSeparatedByString:@" "];
... //within your scheduled/for loop:
static NSInteger location = 0;
static NSInteger index = 0;
NSRange range = NSMakeRange(location, [[words objectAtIndex:index] length]);
location += [[words objectAtIndex:index] length];
index++;
答案 1 :(得分:0)
我已经解决了这个问题,用一个定时器调用go方法,这是我的代码
-(void)go
{
firststring = myArray[countNew];
NSInteger location = location1;
NSInteger index = index1;
NSRange range = NSMakeRange(location, [[myArray objectAtIndex:countNew] length]);
NSLog(@"my range is %@ firstString %@", NSStringFromRange(range) ,firststring);
[stringWithRTFAttributes addAttribute:NSForegroundColorAttributeName value:[UIColor clearColor] range:range];
[_textView setAttributedText:stringWithRTFAttributes];
[_textView setFont:[UIFont boldSystemFontOfSize:20]];
location1 = [[myArray objectAtIndex:countNew] length] +location +1;
index1 = index++;
countNew++;
if(countNew>=[myArray count])
{
[timer invalidate];
}
}
这里的location1,index1是两个长整型数据。