回答編集履歴

4

おまけ2

2017/02/28 09:09

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -23,3 +23,65 @@
23
23
  上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。
24
24
 
25
25
 
26
+
27
+ # おまけ2
28
+
29
+
30
+
31
+ タップ時はフラグを変更してレイアウト更新を依頼する。
32
+
33
+ 実際のレイアウト変更はviewDidLayoutSubviews()で行う。
34
+
35
+
36
+
37
+ この方法だと、Storyboardを使っていても大丈夫だと思います。
38
+
39
+
40
+
41
+ ```swift
42
+
43
+ var isMap = true
44
+
45
+
46
+
47
+ override func viewDidLayoutSubviews() {
48
+
49
+ super.viewDidLayoutSubviews()
50
+
51
+
52
+
53
+ if isMap {
54
+
55
+ //childを縮小して上に、mapは拡大
56
+
57
+ } else {
58
+
59
+ //mapを縮小して上に、childは拡大
60
+
61
+ }
62
+
63
+ }
64
+
65
+
66
+
67
+ @IBAction func ChangeMapView(sender: AnyObject) {
68
+
69
+ isMap = true
70
+
71
+ self.view.setNeedsLayout()
72
+
73
+ }
74
+
75
+
76
+
77
+ @IBAction func ChangeChildView(sender: AnyObject) {
78
+
79
+ isMap = false
80
+
81
+ self.view.setNeedsLayout()
82
+
83
+ }
84
+
85
+ ```
86
+
87
+

3

おまけ

2017/02/28 09:09

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -1,7 +1,3 @@
1
- # その1
2
-
3
-
4
-
5
1
  ```swift
6
2
 
7
3
  // 親ビューの子供に設定
@@ -20,7 +16,7 @@
20
16
 
21
17
 
22
18
 
23
- # その2
19
+ # おまけ
24
20
 
25
21
 
26
22
 

2

説明追記。

2017/02/28 01:07

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -16,6 +16,8 @@
16
16
 
17
17
  Storyboardで配置しているのですから、このコードは必要ないのでは?
18
18
 
19
+ 画面に見えているのはコードで追加したViewで、タップした時にサイズ/優先を変更しているのはStoryboardで配置したViewになっていると思います。
20
+
19
21
 
20
22
 
21
23
  # その2

1

その2

2017/02/28 01:00

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -1,3 +1,7 @@
1
+ # その1
2
+
3
+
4
+
1
5
  ```swift
2
6
 
3
7
  // 親ビューの子供に設定
@@ -11,3 +15,13 @@
11
15
 
12
16
 
13
17
  Storyboardで配置しているのですから、このコードは必要ないのでは?
18
+
19
+
20
+
21
+ # その2
22
+
23
+
24
+
25
+ 上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。
26
+
27
+