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

回答編集履歴

4

おまけ2

2017/02/28 09:09

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -10,3 +10,34 @@
10
10
  # おまけ
11
11
 
12
12
  上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。
13
+
14
+ # おまけ2
15
+
16
+ タップ時はフラグを変更してレイアウト更新を依頼する。
17
+ 実際のレイアウト変更はviewDidLayoutSubviews()で行う。
18
+
19
+ この方法だと、Storyboardを使っていても大丈夫だと思います。
20
+
21
+ ```swift
22
+ var isMap = true
23
+
24
+ override func viewDidLayoutSubviews() {
25
+ super.viewDidLayoutSubviews()
26
+
27
+ if isMap {
28
+ //childを縮小して上に、mapは拡大
29
+ } else {
30
+ //mapを縮小して上に、childは拡大
31
+ }
32
+ }
33
+
34
+ @IBAction func ChangeMapView(sender: AnyObject) {
35
+ isMap = true
36
+ self.view.setNeedsLayout()
37
+ }
38
+
39
+ @IBAction func ChangeChildView(sender: AnyObject) {
40
+ isMap = false
41
+ self.view.setNeedsLayout()
42
+ }
43
+ ```

3

おまけ

2017/02/28 09:09

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,5 +1,3 @@
1
- # その1
2
-
3
1
  ```swift
4
2
  // 親ビューの子供に設定
5
3
  self.parentView.addSubview(self.mapView)
@@ -9,6 +7,6 @@
9
7
  Storyboardで配置しているのですから、このコードは必要ないのでは?
10
8
  画面に見えているのはコードで追加したViewで、タップした時にサイズ/優先を変更しているのはStoryboardで配置したViewになっていると思います。
11
9
 
12
- # その2
10
+ # おまけ
13
11
 
14
12
  上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。

2

説明追記。

2017/02/28 01:07

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -7,6 +7,7 @@
7
7
  ```
8
8
 
9
9
  Storyboardで配置しているのですから、このコードは必要ないのでは?
10
+ 画面に見えているのはコードで追加したViewで、タップした時にサイズ/優先を変更しているのはStoryboardで配置したViewになっていると思います。
10
11
 
11
12
  # その2
12
13
 

1

その2

2017/02/28 01:00

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,7 +1,13 @@
1
+ # その1
2
+
1
3
  ```swift
2
4
  // 親ビューの子供に設定
3
5
  self.parentView.addSubview(self.mapView)
4
6
  self.parentView.addSubview(self.childView)
5
7
  ```
6
8
 
7
- Storyboardで配置しているのですから、このコードは必要ないのでは?
9
+ Storyboardで配置しているのですから、このコードは必要ないのでは?
10
+
11
+ # その2
12
+
13
+ 上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。