0

こんにちは、textview と labelsText の 2 つのラベルを取得しました。このメソッドではそれらは string1 と string2 ですが、textview string1 と labelsText string2 を作成することは実際にはできません。

これはコードです:

-(void)findEqualsIn:(NSString *)string1 and:(NSString *)string2 {
    NSMutableArray *string1chars = [[NSMutableArray alloc] init];
    NSMutableArray *string2chars = [[NSMutableArray alloc] init];


    //filling the string1chars array
    for (int i = 0; i < [string1 length]; i++) {
        [string1chars addObject:[NSString stringWithFormat:@"%c", [string1 characterAtIndex:i]]];
    }

    //filling the string2chars array
    for (int i = 0; i < [string2 length]; i++) {
        [string2chars addObject:[NSString stringWithFormat:@"%c", [string2 characterAtIndex:i]]];
    }

    //checking if they have some letters in common on the same spot
    for (int i = 0; i < [string1chars count] && i < [string2chars count]; i++) {
        if ([[string1chars objectAtIndex:i] isEqualToString:[string2chars objectAtIndex:i]]) {
            //change the color of the character at index i to green
        } else {
            //change the color of the character at index i to the standard color

        }
    }
4

3 に答える 3

0

uilabelまたは内のすべてのテキストはuitextview、同じフォント/色である必要があります。

于 2012-04-23T20:32:26.367 に答える
0

1 文字ごとに複数のラベルを追加して、それらが 1 つのラベルだけにあるように見せることができます。これには次のようなものが必要です。

//make sure the first word is always the one the user gave so you don't show him/her the hidden string
- (void)outputColoredLabelsTo:(UIView *)theView with:(NSString *)word1 and:(NSString *)word2 {
    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 20, 0, 0)] autorelease];

    for (int i = 0; i < [word1 length] && i < [word2 length]; i++) {
        NSString *value = [NSString stringWithFormat:@"%c", [word1 characterAtIndex:i]];
        CGSize size = [value sizeWithFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]];
        label = [[UILabel alloc] initWithFrame:CGRectMake(label.frame.origin.x + label.frame.size.width, label.frame.origin.y, size.width, size.height)];
        [label setText:value];

        if ([word1 characterAtIndex:i] == [word2 characterAtIndex:i]) {
            NSLog(@"Match found at index %i (letter %c)", i, [word1 characterAtIndex:i]);
            [label setTextColor:[UIColor greenColor]];
        } else {
            NSLog(@"No match found at index %i (printing letter %c)", i, [word1 characterAtIndex:1]);
            [label setTextColor:[UIColor blackColor]];
        }

        [theView addSubview:label];
    }
}
于 2012-04-24T08:20:14.493 に答える
0

iOS SDK にはリッチ テキスト用の組み込みコンポーネントがないため、まだ利用できる実装はほとんどありません。UILabels (編集不可) の作成と編集可能なEGOTextViewにはFTCoreTextを使用することをお勧めします。

于 2012-04-23T20:45:10.427 に答える