我在我的应用中使用UIAppearanceProxy,如下所示:
UILabel *label = [UILabel appearance];
label.font = myAppFont;
label.textColor = myAppTextColor;
但有时,我想覆盖默认字体以使用Awesome Font中的字形。我这样做:
NSString *basePos = [NSString stringWithFormat:@"%d %@", (int)self.user.positives, kUpArrow];
NSMutableAttributedString *posString = [[NSMutableAttributedString alloc] initWithString:basePos];
[posString setAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"FontAwesome" size:18]} range:NSMakeRange([posString length] - 1, 1)];
[self.positivesLabel setAttributedText:posString];
当构建并显示视图时,这很有用,但是如果我导航到另一个页面(我正在使用UIPageViewController)并返回,我的属性就消失了。
我尝试重新设置以下属性:
......无济于事。该字符串何时重置为默认值?我该如何覆盖呢?
答案 0 :(得分:0)
同样的事情发生在我身上。
发生这种情况的原因是因为我在font
的外观代理上设置了UILabel
属性,并且无论出于何种原因,当视图重新出现时超出了属性字符串的属性
我通过在设置font
之前将UILabel
上的nil
属性设置为attributedText
来解决此问题。请注意,将font
设置为任何字体也可以解决此问题;它不一定需要设置为nil
。