質問編集履歴

2

脱字

2020/04/24 08:58

投稿

Ka_ya_
Ka_ya_

スコア31

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  ```swift
28
28
 
29
- //イメージビューの
29
+ //イメージビューの
30
30
 
31
31
  let width = self.imageView.frame.width
32
32
 

1

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

2020/04/24 08:58

投稿

Ka_ya_
Ka_ya_

スコア31

test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,17 @@
4
4
 
5
5
  座標とテキストの値が可変なラベルをイメージビューに収まるように表示させたいと思っているのですが、
6
6
 
7
- yに最大値を設定された時にラベルの開始地点が画面の端になってしまう為、ラベルがイメージビューからはみ出してしまいます。
7
+ x・yに最大値を設定された時にラベルの開始地点が画面の端になってしまう為、ラベルがイメージビューからはみ出してしまいます。
8
8
 
9
- なのでyから高さを引いたものをラベルのframeサイズとして設定したのですが、
9
+ なのでx・yから高さや幅を引いたものをラベルのframeの開始地点として設定したのですが、
10
10
 
11
- 一度frameの設定してsizeToFitした後に再度frameを設定する事は出来ないでしょうか
11
+ 開始地点に設定してるx・yが中間くらいの値の時ラベルがイメージビュー中央に配置ない為、表示に違和感が残ります
12
12
 
13
+ 中間くらいの値の時はイメージビューの中央にラベルの中央を揃えたいのですが、
14
+
15
+ 自分で色々と試しても上手くいきませんでした。
16
+
13
- もしくはこういった場合に良い方法があればご教いただきたいです。
17
+ もし良い方法があればご教いただきたいです。
14
18
 
15
19
 
16
20
 
@@ -22,9 +26,17 @@
22
26
 
23
27
  ```swift
24
28
 
29
+ //イメージビューの
30
+
31
+ let width = self.imageView.frame.width
32
+
33
+ let center = width / 2
34
+
35
+ //ラベルの作成
36
+
25
37
  let titleLabel = UILabel()
26
38
 
27
- titleLabel.frame = CGRect(x: xValue, y: yValue, width: 100, height: 0)
39
+ titleLabel.frame = CGRect(x: xValue, y: yValue, width: Double(center), height: 0)
28
40
 
29
41
  titleLabel.text = record.title
30
42
 
@@ -32,26 +44,48 @@
32
44
 
33
45
  titleLabel.lineBreakMode = .byCharWrapping
34
46
 
35
- //ラベルの高さを表示された文字列に合わせる
47
+ titleLabel.sizeToFit()
36
48
 
37
- titleLabel.sizeToFit()
49
+
38
50
 
39
- //ラベルの高さを取得
51
+ //ラベルの高さを取得する
40
52
 
41
53
  let labelHeight = titleLabel.bounds.height
42
54
 
43
- //y座標に使用する値とラベルの高さを足した値がイメージビューより高かったら
55
+ //ラベルの高さがイメージビューより高かったら
44
56
 
45
57
  if (yValue + Double(labelHeight)) >= Double(height) {
46
58
 
47
- //y座標の高さからラベルの高さを引いて
59
+ //ラベルの高さを引
48
60
 
49
61
  yValue -= Double(labelHeight)
50
62
 
51
63
  }
52
64
 
53
- //イメージビューの中に収まる様にframeに設定しyの値を変更したい
65
+ //ラベルの幅がイメージビューより長かっ
54
66
 
67
+ if (xValue + Double(center)) >= Double(width) {
68
+
69
+ //ラベルの幅を引く
70
+
71
+ xValue -= Double(center)
72
+
73
+ //文字を右揃えにする
74
+
75
+ titleLabel.textAlignment = NSTextAlignment.right
76
+
77
+ }
78
+
79
+ //設定を反映させる
80
+
81
+ titleLabel.frame = CGRect(x: xValue, y: yValue, width: Double(center), height: Double(labelHeight))
82
+
83
+ //ラベルを表示させる
84
+
55
- self.moviesGraph.addSubview(titleLabel)
85
+ self.imageView.addSubview(titleLabel)
56
86
 
57
87
  ```
88
+
89
+
90
+
91
+ ![イメージ説明](1f341dccb3ce41dc559a7e05bf5ee765.png)