我已经发现如果我将属性文本设置为UILabel
,预定义字体将更改为属性文本的第一个字符的字体。例如:
// the font size is set to 20 in Interface Builder
println(theLabel.font.pointSize);
var styledText = NSMutableAttributedString(string: "$100");
var smallFont = UIFont(name: theLabel.font.fontName, size: theLabel.font.pointSize / 2)!;
styledText.addAttribute(NSFontAttributeName, value: smallFont, range: NSMakeRange(0, 1));
theLabel.attributedText = styledText;
println(theLabel.font.pointSize);
// output:
// 20
// 10
我不知道是否可以将其称为错误,但在某些情况下会导致问题。
有人可以建议一个干净的解决方案来获取在Interface Builder中设置的默认字体吗?
将字体重置为预定义字体的一种解决方案是设置text
的{{1}}属性,因为这会导致UILabel
切换到纯文本模式(不再有属性文本) )。
UILabel
答案 0 :(得分:1)
假设let myLabel: UILabel
的字体大小为20. myLabel 应显示属性文本:“foo bar”,其中“bar”的字体大小为30。
如果您更改 myLabel 上的字体,打算将“foo”的字体大小更改为不是20,而是更改为15,您会注意到这会导致{{ 1}}搞砸了。
受@ Majid的调查结果启发,如果在应用字体更改之前设置attributedText
属性。 text
保持不变,,现在使用新的“默认”字体进行更新!
attributedText
答案 1 :(得分:-1)
NSMakeRange
负责选择哪些字符
addAttribute
有影响。当你设置
NSMakeRange(0,1)
它告诉每个字符从第0个字符到第1个字符被归因。这意味着只能归因于第一个角色。尝试将其设置为
NSMakeRange(0,i) //or NSMakeRange(0,1000)
我设置了alt。 1000的选项,因为它是一个任意大的数字,只是在以下情况下提供有保证的字体更改" i"不起作用
P.S。 //符号是指先前开发人员写下的有用提示或评论。