3

我在 iOS 7 中为我的应用程序添加了动态类型支持,现在当用户更改他们的系统字体大小然后退出并重新打开应用程序时,它会愉快地更新它。但是,当刚刚启动回应用程序时,我似乎无法让它工作。

我添加了一个观察者:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contentSizeDidChange) name:UIContentSizeCategoryDidChangeNotification object:nil];

当用户更改其大小时,它会调用以下方法:

- (void)contentSizeDidChange {
     [self.tableView invalidateIntrinsicContentSize];
     [self.tableView reloadData];
}

但是我的单元格中的字体大小根本没有改变(尽管单元格的高度会改变)。这是因为我为我的单元格子类化了 UITableViewCell 吗?

编辑:

这是我的UITableViewCell 子类中的内容:

- (void)contentSizeDidChange {
    self.fullCellURLLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
    self.timeLeftLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
    self.timeLeftLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
    self.fullCellPreviewLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
}
4

1 回答 1

2

我将在这里猜测(因为我没有这样做)您必须将每个文本对象上的文本重置为您想要的“首选”大小。当您使用该方法时,它会返回一个静态 UIFont - 字体本身不会在控件“内部”更新。

所以用一个静态视图和一些 uitextfields 来做这个测试——谁知道随着大小的增加系统会如何改变字体呢?先在演示项目中尝试,然后再完善您的真实应用程序。

于 2013-11-07T14:04:41.717 回答