One is too many

『ひとつでは多すぎる』をモットーに色々挑戦したい。 ライフログ(旅・自然)メイン

UILabelの上詰め / Objective-C,Swift

こんばんは! Mitsuharuです(*´ڡ`●)

iOSの開発でちょっとつまづいた際の記録メモです。

内容:ラベル内テキストの上詰めがしたい

表示領域は大きくとっておきながら、上端から表示させたい と思ったのですが

プロパティを見ても、左寄せ・中央寄せ・右寄せ しか見当たりませんでした。

Excelの上詰めと同じイメージの実装ができないかと困りました。

 

Googleで色々調べた結果、下記サイトを参考にさせていただきました。

(参考)

qiita.com

hachinobu.hateblo.jp

 元のフレーム情報をとっておいて、フィットしたあと、高さ以外の情報を戻すという実装になっています。

 

 簡単なプログラムを作って試してみます。

ラベルと、ボタンを押した際にサイズ調整するイベントを作成しました。位置とサイズは適宜、範囲が分かりやすいように背景色をつけました。

f:id:oneistoomany:20190309232357p:plain

↑複数行(制限なし)とするため、Linesは0

f:id:oneistoomany:20190309223535p:plain

f:id:oneistoomany:20190309223552p:plain

      (初期表示)        (ボタンクリック)

 

f:id:oneistoomany:20190309224224p:plainf:id:oneistoomany:20190309224325p:plain

 いい感じに上揃えになりました。

 注意事項は、テキストの内容をセットしたあとに、サイズ調整する4行の処理が必要になります。テキストを何度も変える場合は、都度必要になります。

 参考元を試してみただけになりますが勉強になりましたm(__)m

<おまけ>

Swiftの場合は、下記のコードを書いて実現できました。

        var rect = self.LblHello.frame

        self.LblHello.sizeToFit()

        rect.size.height = self.LblHello.frame.height

        self.LblHello.frame = rect

 

 ※実装に誤りがある、もっと良い方法がある場合はご連絡いただけると助かります。

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB DB PRESS plus)