0

このような NSString 通知を作成したい:「あなたは 4.00 ドルを支払う必要があります。」.お金は赤い色をしています.Android では、HTML.formhtml を使用できます.しかし、IOS でそれを行う方法がわかりません。誰が私を助けることができます?

4

3 に答える 3

2

このコードを試してください

CATextLayer *aTextLayer_= [[[CATextLayer alloc]init] autorelease];
    aTextLayer_.frame = CGRectMake(10, 100, 300, 50);
    aTextLayer_.backgroundColor=[UIColor clearColor].CGColor;
    aTextLayer_.foregroundColor = [[UIColor redColor] CGColor];
    aTextLayer_.alignmentMode=kCAAlignmentCenter;
    aTextLayer_.contentsScale = [[UIScreen mainScreen] scale];
    aTextLayer_ .wrapped=YES;
    [aTextLayer_ setAlignmentMode:kCAAlignmentLeft];

    UIFont *smallFont = [UIFont systemFontOfSize:25];
    CTFontRef ctSmallFont = CTFontCreateWithName((CFStringRef)smallFont.fontName, smallFont.pointSize, NULL);

    UIFont *boldFont = [UIFont systemFontOfSize:25];
    CTFontRef ctBoldFont = CTFontCreateWithName((CFStringRef)boldFont.fontName, boldFont.pointSize, NULL);

    CGColorRef cgColor = [UIColor greenColor].CGColor;
    CGColorRef cgColor1 = [UIColor redColor].CGColor;

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                (id)ctSmallFont, (id)kCTFontAttributeName,
                                cgColor, (id)kCTForegroundColorAttributeName, nil];

    NSDictionary *subattributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                   (id)ctBoldFont, (id)kCTFontAttributeName,
                                   cgColor1, (id)kCTForegroundColorAttributeName, nil];
    CFRelease(ctBoldFont);
    NSString *subString=@"You must pay 4.00 dollar.";
    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:subString attributes:attributes];

    [attrStr addAttributes:subattributes range:NSMakeRange(13,4)];
    aTextLayer_.string=attrStr;
    [self.view.layer addSublayer:aTextLayer_];

ここに画像の説明を入力

于 2013-01-21T07:31:25.580 に答える
1

を使用したくない場合は、 を使用することをUIWebViewお勧めしますNSAttributedString

コーナーケースとエラーチェックをあまり気にしない単純な実装は、次のようになります

NSString * string = @"You must pay 4.00 dollar";
NSString * pattern = @"You must pay (.+) dollar";
NSRegularExpression * regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:NULL];
NSArray * matches = [regex matchesInString:string options:0 range:NSMakeRange(0, string.length)];
NSRange priceRange = [matches[0] rangeAtIndex:1];
NSMutableAttributedString * attrString = [[NSMutableAttributedString alloc] initWithString:string];
[attrString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:priceRange];

あなたのパターンは常にYou must pay (.+) dollar. 異なる場合は、正規表現を調整して、NSRange様式化する必要がある部分文字列を取得します。

次に、属性付きの文字列を を受け入れるもののコンテンツとして使用できます。NSAttributedStringたとえば、iOS 6 以降UILabelattributedTextプロパティがあるため、次のようなことができます。

yourLabel.attributedText = attrString;
于 2013-01-21T05:07:17.193 に答える
0

HTMLコードをUIWebViewに追加できます

  [_webView loadHTMLString:@"<p>You must pay <font color=\"red\">4.00</font> dollar. </p> " baseURL:nil];

このコードを試してください

-----------------代替オプション--------------------------------

このテキスト形式を修正する場合 (XXXX.XXX ドルを支払う必要があります) より良い カスタム コンポーネントを作成します。

  1. UIView を拡張するクラスを作成する
  2. 異なるフォント色でUILableを追加
于 2013-01-21T04:17:06.677 に答える