iOS7 UITextView contentsize.height 代替案
2023-09-29 14:04:31
質問
iOS 6.1 から iOS 7 にアプリを移植しています。レイアウトを使用しており、そこには
UITextView
があり、その幅は固定ですが、高さはそのcontentsizeに基づきます。iOS 6.1ではcontentsize.heightをチェックして、それをテキストビューのフレームの高さとして設定すれば十分でしたが、iOS 7ではうまくいきません。
では、どのようにすれば
UITextView
を作成するにはどうしたらよいでしょうか。
注:これらのビューはInterface Builderではなく、コードから作成しています。
どのように解決するのですか?
以下のコードで、固定幅のUITextViewの高さを変更することができます(iOS 7およびそれ以前のバージョンで動作しています)。
- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width
{
UITextView *textView = [[UITextView alloc] init];
[textView setAttributedText:text];
CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
return size.height;
}
この関数では、NSAttributedStringと固定幅を受け取り、必要な高さを返します。
特定のフォントのテキストからフレームを計算したい場合は、次のコードを使用する必要があります。
- (CGSize)text:(NSString *)text sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
CGRect frame = [text boundingRectWithSize:size
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:@{NSFontAttributeName:font}
context:nil];
return frame.size;
}
else
{
return [text sizeWithFont:font constrainedToSize:size];
}
}
を追加することができます。
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
として、プロジェクト内のprefix.pchファイルに追加してください。
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
また、先ほどのテストを置き換えることで
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)
によって。
if ([text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)])
関連
-
制御が非ボイド関数の終了に達する
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] UITableViewの下にある余分なセパレータをなくす
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
-
[解決済み] UICollectionView、全幅のセル、オートレイアウトの動的な高さを許可しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] UITableViewの下にある余分なセパレータをなくす
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] UITextFieldのテキストインセット?
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
-
[解決済み] iOS 11、Apple TV 4Kなどを搭載したXcode 9でワイヤレスデバッグを行う方法とは?
-
[解決済み] iOS 7のUITableViewCellとUITextViewの高さ?