私はスタック全体でこれに対する答えを探してきましたが、このトピックには多くのことがあり、少なくとも私には答えられないようです。
ストーリーボード (プロトタイプ セル) に固定サイズのカスタム UIView があります。そのための UIView をサブクラス化し、drawRect メソッドを上書きしました。基本的には、フォーマットされた文字列をまとめて、次のように描画します。
// now for the actual drawing
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadowWithColor(context,
CGSizeMake(0, 1),
0,
[UIColor whiteColor].CGColor);
CGMutablePathRef path = CGPathCreateMutable(); //1
CGPathAddRect(path, NULL, self.bounds );
// flip the coordinate system
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CTFramesetterRef framesetter =
CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)stringToDraw); //3
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
CTFrameDraw(frame, context); //4
デフォルトのサイズを十分に大きくすれば、複数行のテキストを処理できます。
CGPath はすべての UIView を使用しますが、これは問題ありません。
CGPath の幅を固定したままにしたいのですが、本質的に無制限の量のテキストに対応するために高さを拡張したいのですが、現在は切り取られています (パス/ビューがそれを囲むのに十分な大きさではないため)。
CTFramesetterSuggestFrameSizeWithConstraints で遊んでみましたが、役に立ちませんでした。誰かが私が必要とすることを達成するコードを開発するのを手伝ってくれませんか?