iOS 7 で Dynamic Type をサポートするようにアプリを更新しています。システム設定に応じてテキストのサイズを調整するのは比較的簡単でしたが、UITableView と複数の UILabels を持つセルのコンテキストで使用しているためです。私が心配しなければならないのはテキストサイズだけではありません。テキストが拡大する場合はセルの高さも同様に調整し、テキストが縮小する場合はセルの高さも同様に調整する必要があります。
また、サイズが小さくなると、最大サイズのタイプと比較してアイテム間のスペースが明らかに少なくなります (サイズが小さいとアイテム間のスペースが巨大になるため)。
ユーザーが動的タイプのサイズを変更したときに、これらのようなより高度なレイアウトの問題を変更するにはどうすればよいですか?
今、私はかろうじて機能する本当に醜いことをしています。ラベルの 1 つの高さを見て、定数をそのサイズに合わせてスケーリングします。しかし、要素間のパディングとして使用されている現在のテキストサイズで UILabel の高さの 110% が必ずしも普遍的に機能するとは限らないため、非常に不正確です。
そのため、その例で私がやっていることは次のとおりです。
CGRect articleTitleRect = [article.title boundingRectWithSize:CGSizeMake(CGRectGetWidth(self.contentView.bounds) - 29, MAXFLOAT)
options:NSStringDrawingUsesFontLeading
attributes:@{ NSFontAttributeName: [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline] }
context:nil];
self.urlConstant.constant = articleTitleRect.size.height / 5;
self.previewConstant.constant = articleTitleRect.size.height / 5;
(基本的には、ラベルの高さを調べ、そのパーセンテージを使用して間隔を推測します。繰り返しますが、非常に不正確であり、普遍的にうまく機能しません。)
私が考えたもう1つのことは、現在preferredFontForTextStyle:
がポイントサイズでどれに等しいかを確認し、特定の値についてインターフェースの調整/間隔をハードコーディングすることでした。これは少しうまく機能しますが、Apple が念頭に置いていたものにはまだ最適ではないようです。 t バットをオフにします (ハックのように見えます)。
では、Tweetbot 3 (現在、Dynamic Type を使用して UITableViewCell 要素を設定する) などのアプリは、さまざまな Dynamic Type サイズで UI の見栄えを良くするために何をしているのでしょうか? これを行う最善の方法は何ですか?正直なところ、このトピックに関するチュートリアルはないようです。