3

次の問題があります。下のスクリーンショットのように、2 つの UI ラベルを並べて作成する必要があります。

ここに画像の説明を入力

特別オファー テキストを含む UI ラベルは動的であり、含まれるテキストの幅に合わせて調整する必要があります。また、可能であれば、関連するパディングを使用して斜めのオレンジ色の背景を表示する必要があります。

私は主にフロントエンド開発者です.CSSを使用すると、ラベルの右側に配置された長い背景画像を使用し、それに応じてパッドを配置します.しかし、客観的なCでこれにアプローチする方法がわかりません.アドバイス?

4

6 に答える 6

4

これはドロップイン ソリューションではありませんが、おそらくそれを見つけるのに役立ちます (自動レイアウトを使用していないと仮定します)。

  • UIImageView背景にはUILabelが、テキストにはが必要です
  • 背景には、タイル化/伸縮可能な画像 (おそらくキャップ インセット付き) を使用します (「 」を参照[UIImage resizableImageWithCapInsets:resizingMode:]) 。
  • ラベルにテキストを設定する
  • [label sizeToFit]含まれるテキストに正確に合うようにラベルのサイズを変更するための呼び出し
  • ラベルのサイズに応じて画像ビューのサイズを変更します (たとえばimageView.frame = CGRectInset(label.frame, -10, -10)、画像ビューがすべての辺でラベルよりも 10pt 大きくなります)。

自動レイアウトを使用すると、ラベルと画像ビューの間に適切な制約を定義し、ラベルの「本質的なコンテンツ サイズ」に依存するだけで済みます。これは非常に簡単なはずです。

于 2013-10-18T15:42:04.357 に答える
1

これがお役に立てば幸いです

CGFloat rect = [YOURSTRING
    boundingRectWithSize: (CGSize){ labelWidth, CGFLOAT_MAX }
    options: NSStringDrawingUsesLineFragmentOrigin
    attributes: @{ NSFontAttributeName : labelFont };
    context: nil];

これは、numberOfLines = 0 を想定しています。

于 2014-06-23T11:47:04.097 に答える
0

使いたいものはUILabel -sizeToFitから継承されUIViewます。そこから残りを把握できるはずです。

于 2013-10-18T14:50:00.517 に答える