2014-11-04 43 views
0

我有一个NSString是一个字母,另一个是他们的签名。我需要将两者合并为一个字符串进行显示,但签名需要以不同的字体和大小显示。是的,字体和大小都在自己的工作。stringbyappendingstring不同的大小和字体类型

现在我有如下:

NSString *letter; 
NSString *signOff; 

_paragraph.font = [UIFont fontWithName:@"BeinetCondensed" size:14]; 
_signature.font = [UIFont fontWithName:@"AnnoyingKettle" size:18]; 

letter = [_paragraph text]; 
signOff = [_signature text]; 

NSString *completedLetter = [letter stringByAppendingString:signOff]; 

completedLetter显示为相同的大小和字体类型。

回答

0

有一种老方法,可能有用;

self.title = @"For iOS 6 & later"; 
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Using NSAttributed String"]; 
[str addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0,5)]; 
[str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(6,12)]; 
[str addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(19,6)]; 
[str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Arial-BoldItalicMT" size:30.0] range:NSMakeRange(0, 5)]; 
[str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Bold" size:30.0] range:NSMakeRange(6, 12)]; 
[str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Courier-BoldOblique" size:30.0] range:NSMakeRange(19, 6)]; 
attrLabel.attributedText = str; 
+0

我已经看到了这个例子,但总是不知道该签名的大小和不能使用NSMakeRange。它将永远是不同的大小。 – JeffK 2014-11-04 02:45:42

1

你正在玩弄错误的球场 - 看错了地方 - 吠叫错误的树 - 使用错误的课程。

text and NSString and stringByAppendingString have no size or font information。 _paragraph_signature的字体完全不相关;它们仅仅是这些视图显示自己完全缺少任何字体的字符串的方式。因此,当你组合没有字体的字符串时,你仍然会得到一个没有字体的字符串。

如果你想使用做的有字符大小和字体信息,你需要开始使用NSAttributedString(和attributedText)。

这是一个单NSAttributedString:

enter image description here

+1

这里是我的书的一部分,教你如何做到这一点:http://www.apeth.com/iOSBook/ch23.html#_attributed_strings – matt 2014-11-04 02:44:13

+0

我在UITextView显示最终结果,我知道它不支持NSAttributedString。我对么? – JeffK 2014-11-04 02:44:18

+0

如果您使用的是iOS 5或之前版本,则无误。否则,不,你是不正确的。 – matt 2014-11-04 02:44:50