我想发出这样的 NSString 通知:“你必须支付 4.00 美元。”。钱是红色的。在 Android 中,我可以使用 HTML.formhtml 做到这一点。但我不知道如何在 IOS 中做到这一点。谁能帮我?
问问题
1236 次
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
如果您不想使用 aUIWebView
您最好的选择是使用 a 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
需要风格化的子字符串。
然后你可以使用属性字符串作为任何接受 a 的内容NSAttributedString
,例如从 iOS 6 开始UILabel
就有一个attributedText
属性,因此你可以做类似的事情
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 美元。)更好地创建自定义组件
- 创建类扩展 UIView
- 添加具有不同字体颜色的 UILable
于 2013-01-21T04:17:06.677 回答