回答編集履歴

4 おまけ2

fuzzball

fuzzball score 15217

2017/02/28 18:09  投稿

```swift
// 親ビューの子供に設定
self.parentView.addSubview(self.mapView)
self.parentView.addSubview(self.childView)
```
Storyboardで配置しているのですから、このコードは必要ないのでは?
画面に見えているのはコードで追加したViewで、タップした時にサイズ/優先を変更しているのはStoryboardで配置したViewになっていると思います。
# おまけ
上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。
 
# おまけ2  
 
タップ時はフラグを変更してレイアウト更新を依頼する。  
実際のレイアウト変更はviewDidLayoutSubviews()で行う。  
 
この方法だと、Storyboardを使っていても大丈夫だと思います。  
 
```swift  
var isMap = true  
 
override func viewDidLayoutSubviews() {  
   super.viewDidLayoutSubviews()  
     
   if isMap {  
       //childを縮小して上に、mapは拡大  
   } else {  
       //mapを縮小して上に、childは拡大  
   }  
}  
 
@IBAction func ChangeMapView(sender: AnyObject) {  
   isMap = true  
   self.view.setNeedsLayout()  
}  
     
@IBAction func ChangeChildView(sender: AnyObject) {  
   isMap = false  
   self.view.setNeedsLayout()  
}  
```  
3 おまけ

fuzzball

fuzzball score 15217

2017/02/28 10:07  投稿

# その1  
 
```swift
// 親ビューの子供に設定
self.parentView.addSubview(self.mapView)
self.parentView.addSubview(self.childView)
```
Storyboardで配置しているのですから、このコードは必要ないのでは?
画面に見えているのはコードで追加したViewで、タップした時にサイズ/優先を変更しているのはStoryboardで配置したViewになっていると思います。
# その2
# おまけ
上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。
2 説明追記。

fuzzball

fuzzball score 15217

2017/02/28 10:00  投稿

# その1
```swift
// 親ビューの子供に設定
self.parentView.addSubview(self.mapView)
self.parentView.addSubview(self.childView)
```
Storyboardで配置しているのですから、このコードは必要ないのでは?
画面に見えているのはコードで追加したViewで、タップした時にサイズ/優先を変更しているのはStoryboardで配置したViewになっていると思います。  
# その2
上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。
1 その2

fuzzball

fuzzball score 15217

2017/02/28 09:53  投稿

# その1  
 
```swift
// 親ビューの子供に設定
self.parentView.addSubview(self.mapView)
self.parentView.addSubview(self.childView)
```
Storyboardで配置しているのですから、このコードは必要ないのでは?
Storyboardで配置しているのですから、このコードは必要ないのでは?
# その2
上に来るViewを最前面に表示させればいいので`self.view.sendSubviewToBack()`は不要です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る