お?いけるくさい?

iPhoneアプリエンジニアのたまごです。いっちょまえエンジニア目指してちいさな発見や学んだことを覚え書きしていきます!Objective-C/iOS/開発

UILabelの超簡単な縦揃えの方法!

IBでUILabelを作って文字を表示するときに

改行の指定はできるんやけど、

それをしたときに、

文字が少ないと表示がLabelの真ん中になってしまう。

これはどうやらデフォの性質らしく。

簡単にプロパティとかで指定できたらいいけど、

それも簡単にはできないらしく。

 

左上寄せしたい!と思ってその方法を調べてみたところ、

クラスを追加するとかメソッドを追加するとか

けっこうややこしい方法が出てきて、

思った異常に面倒くさそうやった。

 

実装の方法がいまいち理解できずに、

Myトレーナーさんに質問をしたところ、

そんなもんを使わなくても簡単に左上寄せできるということ!

 

なぬー!

 

その方法というのが、

①UILabelのサイズ・座標をばっちり指定する!

②そのラベルの numberOfLines プロパティの値を0に!

③そのラベルに sizeToFit メソッドを実行!

 

この3ステップを行うだけ!というシンプルな方法です。

注意点としては、

①はviewDidLoadなどで行っていいのやけど、

②③に関しては、そのラベルを表示したいところに書くっていうこと。

そのラベルに表示するテキストの内容が変数などで切り替わる場合、

そのテキストの内容を入れたあとに、②③を実行すればOK(∀`*)ノ

 

↓こうやってはじめにviewDidLoadに書いたら反映されない(コメントアウト)

    [_cmLabelsetFrame:CGRectMake(20, 112, 147, 100)];  ・・・①

//    _cmLabel.numberOfLines = 0;                ・・・②

//    [_cmLabel sizeToFit];                    ・・・③

↓ので、ラベルにテキストを表示させたあとで書く!

    _cmLabel.text = _cmText

    _cmLabel.numberOfLines = 0;

    [_cmLabelsizeToFit];

 

クラスを追加してやる方法も実装できるようにならなきゃなんやけど。

Myトレーナーさん

いつもありがとうございますー!