我正在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];
}
答案 0 :(得分:2)
我要在这里猜测(因为我没有这样做)你必须将每个文本对象上的文本重置为你想要的“首选”大小。当您使用该方法时,它返回一个静态UIFont - 字体本身不会在控件内“更新”。
使用静态视图和一些uitextfields进行此测试 - 谁知道系统将随着大小的增加更改字体?在优化真实应用之前,首先在演示项目中尝试。