teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

脱字

2020/04/24 08:58

投稿

Ka_ya_
Ka_ya_

スコア31

title CHANGED
File without changes
body CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
  ```swift
15
- //イメージビューの
15
+ //イメージビューの
16
16
  let width = self.imageView.frame.width
17
17
  let center = width / 2
18
18
  //ラベルの作成

1

ラベルの設定に関しては自己解決出来ました。

2020/04/24 08:58

投稿

Ka_ya_
Ka_ya_

スコア31

title CHANGED
File without changes
body CHANGED
@@ -1,29 +1,46 @@
1
1
  質問失礼します。
2
2
 
3
3
  座標とテキストの値が可変なラベルをイメージビューに収まるように表示させたいと思っているのですが、
4
- yに最大値を設定された時にラベルの開始地点が画面の端になってしまう為、ラベルがイメージビューからはみ出してしまいます。
4
+ x・yに最大値を設定された時にラベルの開始地点が画面の端になってしまう為、ラベルがイメージビューからはみ出してしまいます。
5
- なのでyから高さを引いたものをラベルのframeサイズとして設定したのですが、
5
+ なのでx・yから高さや幅を引いたものをラベルのframeの開始地点として設定したのですが、
6
- 一度frameの設定してsizeToFitした後に再度frameを設定する事は出来ないでしょうか
6
+ 開始地点に設定してるx・yが中間くらいの値の時ラベルがイメージビュー中央に配置ない為、表示に違和感が残ります
7
+ 中間くらいの値の時はイメージビューの中央にラベルの中央を揃えたいのですが、
8
+ 自分で色々と試しても上手くいきませんでした。
7
- もしくはこういった場合に良い方法があればご教いただきたいです。
9
+ もし良い方法があればご教いただきたいです。
8
10
 
9
11
  よろしくお願い致します。
10
12
 
11
13
 
12
14
  ```swift
15
+ //イメージビューの
16
+ let width = self.imageView.frame.width
17
+ let center = width / 2
18
+ //ラベルの作成
13
19
  let titleLabel = UILabel()
14
- titleLabel.frame = CGRect(x: xValue, y: yValue, width: 100, height: 0)
20
+ titleLabel.frame = CGRect(x: xValue, y: yValue, width: Double(center), height: 0)
15
21
  titleLabel.text = record.title
16
22
  titleLabel.numberOfLines = 0
17
23
  titleLabel.lineBreakMode = .byCharWrapping
18
- //ラベルの高さを表示された文字列に合わせる
19
- titleLabel.sizeToFit()
24
+ titleLabel.sizeToFit()
25
+
20
- //ラベルの高さを取得
26
+ //ラベルの高さを取得する
21
27
  let labelHeight = titleLabel.bounds.height
22
- //y座標に使用する値とラベルの高さを足した値がイメージビューより高かったら
28
+ //ラベルの高さがイメージビューより高かったら
23
29
  if (yValue + Double(labelHeight)) >= Double(height) {
24
- //y座標の高さからラベルの高さを引いて
30
+ //ラベルの高さを引
25
31
  yValue -= Double(labelHeight)
26
32
  }
27
- //イメージビューの中に収まる様にframeに設定しyの値を変更したい
33
+ //ラベルの幅がイメージビューより長かっ
34
+ if (xValue + Double(center)) >= Double(width) {
35
+ //ラベルの幅を引く
36
+ xValue -= Double(center)
37
+ //文字を右揃えにする
38
+ titleLabel.textAlignment = NSTextAlignment.right
39
+ }
40
+ //設定を反映させる
41
+ titleLabel.frame = CGRect(x: xValue, y: yValue, width: Double(center), height: Double(labelHeight))
42
+ //ラベルを表示させる
28
- self.moviesGraph.addSubview(titleLabel)
43
+ self.imageView.addSubview(titleLabel)
29
- ```
44
+ ```
45
+
46
+ ![イメージ説明](1f341dccb3ce41dc559a7e05bf5ee765.png)