6

数値ラベルが縮小し、「全体」ラベルが真下にある次のセル デザインがあります。

ここに画像の説明を入力

adjustFontSizeToFitWidthminimumFontSizeプロパティを適切に設定しました。フォントは正しくサイズ変更されています。ただし、数値ラベルを下部に固定するのは困難です。特に、フォントが縮小すると、2 つのラベル間のギャップが広がり、垂直方向の中央に表示されなくなります。

、、、およびフォントの を使用しsizeToFitてみました。すべて失敗しました。sizeThatFitspointSize

は認識していますがsizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:、なぜ と組み合わせて使用​​する必要があるのか​​わかりませんadjustFontSizeToFitWidth

4

2 に答える 2

2

UILabelsああ、コンテナビューの中央(水平方向と垂直方向の両方)にを配置したいですか?

私は自分の答えを言い換えたので、将来の読者にとってより意味のあるものになるでしょう。

私のコードは、3つのIBOutletsが設定されていることを前提としています。

UIView *containerView; //Your nice view containing the two textfields.
UILabel *points; //The label containing the number.
UILabel *overall; //The textfield containing the text 'overall'.

テキストを割り当ててを呼び出した、ラベルのフレームを設定するだけですsizeToFit

  1. この最初の行はUILabelポイントを配置しますが、唯一の変更点は、y座標がcontainerViewそれ自体の高さの半分を引いた半分であるということです。

    points.frame = CGRectMake(points.frame.origin.x, (containerView.frame.size.height / 2) - (points.frame.size.height / 2), points.frame.size.width, points.frame.size.height);
    
  2. それに応じて配置するoverallには-番号と全体的なラベルの間にたとえば6の距離があると言います。

    int space = 6;
    
    overall.frame = CGRectMake(overall.frame.origin.x, points.frame.origin.y + points.frame.size.height + space, overall.frame.size.width, overall.frame.size.height);
    
  3. あなたのコメントを読んだら、あなたはこの解決策を求めていると思います。UILabels両方を中央に表示したい場合; そのような(overall.frame.size.height / 2) + (space / 2)のy値から減算します(その下に番号2のコードがあります):points

    int space = 6;
    points.frame = CGRectMake(points.frame.origin.x, ((containerView.frame.size.height / 2) - (points.frame.size.height / 2)) - ((overall.frame.size.height / 2) + (space / 2)), points.frame.size.width, points.frame.size.height);
    overall.frame = CGRectMake(overall.frame.origin.x, points.frame.origin.y + points.frame.size.height + space, overall.frame.size.width, overall.frame.size.height);
    

最後のポイントは、この画像のような出力を生成します。ご覧のとおり、青い線は画像全体の半分であり、中央の点で黒い長方形(2つのラベルの周りにぴったりと収まっています)と交差しています。これがあなたが求めていたものであることを願っています。

効果を描いた画像

于 2013-02-14T15:13:11.677 に答える
0

2 つのラベルを使用するCATextLayer代わりに、代わりに使用します。1 つの部分を BOLD に、もう 1 つの部分を通常に簡単に作成できます。さらに、1 つのレイヤーの位置とサイズの調整は、2 つのラベルを配置するよりも簡単です。影の設定、改行モード、フォント、すべてを美しく調整できます:)

于 2013-02-14T15:58:29.540 に答える