3

iOS 7 で自分のアプリに Dynamic Type のサポートを追加しています。現在、ユーザーがシステム フォント サイズを変更し、アプリを終了して再度開くと、アプリは快適に更新されます。ただし、アプリを起動しただけでは、機能しないようです。

オブザーバーを追加しました:

 [[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 に答える