在UITextView中更改字体在iOS7中不起作用

时间:2013-10-10 09:56:24

标签: cocoa-touch uitableview fonts ios7 uitextview

我有一个带文本的UITextView,View在UITableViewCell中。我注意到iOS7上的字体与iOS6不太一样,注意它被设置为“system”我决定指定确切的字体/大小。

似乎什么也没发生,所以我想我会做一个更好的测试(大字体没有在任何地方使用),就像在我的“CellForRowAt ......”中一样;

cell.newsItemDescription.font = [UIFont fontWithName:@"didot" size:20];
cell.newsItemDescription.text = newsDescriptions[indexPath.row];

在iOS6中,它就是这样的;

Screen Shot from iOS6

在iOS7中,它就像这样;

enter image description here

它发生在应用程序的几个地方,但它非常烦人,无法弄清楚为什么?我正在快速达到可以在整个应用程序中使用iOS7字体/大小的程度。

一些额外信息;
每个单元格都会调整UITextView的大小(使用弹簧/支柱,即没有自动布局)和HeightForRow ...

字体最初是在Storyboard中设置的(作为系统)

这在设备和模拟器上是相同的

5 个答案:

答案 0 :(得分:32)

我在iOS 7中有一个奇怪的行为。如果我将它设置为xib,则字体比我预期的要小。

如果我在设置文本后设置字体,那么它对我有效。否则字体会变小。

试试这个:

  cell.newsItemDescription.text = newsDescriptions[indexPath.row];
  cell.newsItemDescription.font = [UIFont fontWithName:@"didot" size:20];

答案 1 :(得分:6)

我今天和UITextView有同样的问题,在阅读AlKozin的答案时,我记得有些东西:某个地方,有时候我读到自iOS 7以来,设置字体样式的最佳做法是在View加载后设置它们。换句话说,如果我在viewDidLoad中设置了所有内容:没有任何反应。您必须在viewWillAppear:中设置UITextView的字体,如下所示:

-(void)viewWillAppear:(BOOL)animated
{
     self.myTextView.font = [UIFont fontWithName:@"Baskerville-Italic" size:18.0];
}

答案 2 :(得分:3)

我遇到了一个奇怪的错误(Xcode 7.2.1),在那里取消选中" Selectable"在IB中导致UITextView不遵守通过IB指定的字体设置。

Reference Image

答案 3 :(得分:3)

这是我面临的同样问题。

从故事板中使UITextview“可选”将起作用。

答案 4 :(得分:0)

Setting textview.font worked fine for me on iOS 7, but none of these answers, or other similar answers on other SO pages worked for me on iOS 8. The only way I was able to get it working was to use an NSAttributedString.

NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];
[pStyle setAlignment:NSTextAlignmentCenter];
tv.attributedText = [[NSAttributedString alloc]
                     initWithString:text
                         attributes:@{ NSForegroundColorAttributeName: color,
                                       NSFontAttributeName: [UIFont systemFontOfSize:fontSize],
                                       NSParagraphStyleAttributeName: pStyle,
                                     } ];