質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

iPhone 6

iPhone 6は、2014年に発売されたアップル社のスマートフォンです。画面サイズは4.7インチあり、A8コアチップとM8モーションコプロセッサを搭載しています。

Q&A

2回答

3421閲覧

swiftで上下にlabelを設定したとき、重ならないようにする

hotsplus

総合スコア653

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

iPhone 6

iPhone 6は、2014年に発売されたアップル社のスマートフォンです。画面サイズは4.7インチあり、A8コアチップとM8モーションコプロセッサを搭載しています。

0グッド

0クリップ

投稿2015/04/16 09:57

swiftでlabelを2つ定義して上下に並べている
TEXT1
TEXT2
このような状態で、稀にTEXT1の文字数がすごく長く2行や3行とかになってしまった場合TEXT1の2行目とTEXT2がかぶってしまいます。
理想の状態は
TEXT1の1行目
TEXT1の2行目
TEXT2
となってほしく、自動でTEXT1の幅(高さ)に応じてTEXT2も下にズレてほしいです

試していないですがTEXT1の高さを取って、TEXT2の開始位置に+すればいいのでしょうか?

よろしくお願いします

storyboardは使用していないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんにちは。

AknEpさんが、おっしゃるとおり、まずは試してみるのが先決かとは思いますが……

もしも、すでにテキストの長さがわかっているようであれば、layer.position で Labelごとの Y座標を指定してあげれば、labelが重なることはありません。

また、Labelの高さを 0に設定し、sizeToFitを使うことで Labelの高さをテキストの長さにあわせて自動的に調整することができます。

下記にサンプルコードを記載し、シミュレータのスクリーンショットを添付させていただきます。

lang

1import UIKit 2 3class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 /* 9 テキストを表示しきれない Label1 10 */ 11 12 let myLabel1: UILabel = UILabel(frame: CGRectMake(0,0,300,50)) //Label1の高さを50に設定 13 myLabel1.text = "Hello Swift! Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 14 myLabel1.backgroundColor = UIColor.cyanColor() 15 myLabel1.layer.position = CGPoint(x: self.view.bounds.width/2,y: 100) 16 // テスト用に行数を無制限に設定 17 myLabel1.numberOfLines = 0; 18 self.view.addSubview(myLabel1) 19 20 21 /* 22 テキストの長さによって高さを動的に調整する Label2 23 */ 24 25 let myLabel2: UILabel = UILabel(frame: CGRectMake(0,0,300,0)) //Label2の高さを0に設定 26 myLabel2.text = "Hello Swift! Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 27 myLabel2.backgroundColor = UIColor.cyanColor() 28 myLabel2.layer.position = CGPoint(x: self.view.bounds.width/2,y: 200) 29 // 行数を無制限に設定 30 myLabel2.numberOfLines = 0; 31 // 高さを自動調整 32 myLabel2.sizeToFit() 33 self.view.addSubview(myLabel2) 34 35 36 } 37 38 override func didReceiveMemoryWarning() { 39 super.didReceiveMemoryWarning() 40 // Dispose of any resources that can be recreated. 41 } 42 43 44} 45

![イメージ説明]WIDTH:375

以上、ご参考いただければ幸いです。

投稿2015/04/17 03:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

試していないですがTEXT1の高さを取って、TEXT2の開始位置に+すればいいのでしょうか?

試しましょう。。 コードで書くのなら、それでも動きますよ。
上のUILabelのtextに文字列を代入した後で高さを計算しないとだめですが。

但し、UIの要素を並べるのであれば、AutoLayoutを使った方がベターです。
AutoLayoutはStoryboardを使用した方が恐らく楽に設定できますが、コードで設定することも可能です。

投稿2015/04/16 10:11

AknEp

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問