質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2170閲覧

mapview上にbuttonを配置する方法

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/05/15 04:20

編集2020/05/15 04:34

swift初心者のものです。よろしくお願いします。
mapviewの上にボタンを置く際に、mapviewの階層に入らないようにする方法というのはどのようにして行えば良いのでしょうか。
お手数ですがよろしくお願いします。

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController ,MKMapViewDelegate,
CLLocationManagerDelegate{

var locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() locationManager.delegate = self // 画面背景色を設定 self.view.backgroundColor = UIColor(red:0.7,green:0.7,blue:0.7,alpha:1.0) } // 画面回転にも対応する override func viewDidAppear(_ animated: Bool) { var topPadding: CGFloat = 0 var bottomPadding: CGFloat = 0 var leftPadding: CGFloat = 0 var rightPadding: CGFloat = 0 if #available(iOS 11.0, *) { // 'keyWindow' was deprecated in iOS 13.0: Should not be used for applications let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first topPadding = window!.safeAreaInsets.top bottomPadding = window!.safeAreaInsets.bottom leftPadding = window!.safeAreaInsets.left rightPadding = window!.safeAreaInsets.right } //位置情報サービスの確認 CLLocationManager.locationServicesEnabled() // セキュリティ認証のステータス let status = CLLocationManager.authorizationStatus() if(status == CLAuthorizationStatus.notDetermined) { print("NotDetermined") // 許可をリクエスト locationManager.requestWhenInUseAuthorization() } else if(status == CLAuthorizationStatus.restricted){ print("Restricted") } else if(status == CLAuthorizationStatus.authorizedWhenInUse){ print("authorizedWhenInUse") } else if(status == CLAuthorizationStatus.authorizedAlways){ print("authorizedAlways") } else{ print("not allowed") } // 位置情報の更新 locationManager.startUpdatingLocation() // MapViewのインスタンス生成. let mapView = MKMapView() // MapViewをSafeAreaに収める(Portraitのケース) // 以降、Landscape のみを想定 let screenWidth = view.frame.size.width let screenHeight = view.frame.size.height let rect = CGRect(x: leftPadding, y: topPadding, width: screenWidth - leftPadding - rightPadding, height: screenHeight - topPadding - bottomPadding ) mapView.frame = rect // Delegateを設定. mapView.delegate = self // 縮尺を設定 var region:MKCoordinateRegion = mapView.region region.center = mapView.userLocation.coordinate region.span.latitudeDelta = 0.04 region.span.longitudeDelta = 0.04 mapView.setRegion(region,animated:true) // MapViewをViewに追加. self.view.addSubview(mapView) mapView.mapType = MKMapType.hybrid mapView.userTrackingMode = MKUserTrackingMode.follow mapView.userTrackingMode = MKUserTrackingMode.followWithHeading } func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { print("region changed") } @IBAction func plusbutton(_ sender: Any) { }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/05/15 04:28

mapView はどのようにして配置されているのでしょうか。 StoryBoard上での実装であれば、ボタンはmapViewの上に置いても一応問題なく機能するはずです。 全てコード ベースなのか、Storyboard併用なのかをご質問に追記していただいた方が良いかと思います。 また、作りかけでもコードがあればそれを提示された方がより適切な回答が得られるかと思います。
退会済みユーザー

退会済みユーザー

2020/05/15 04:37

TsukubaDepot様 昨日に引き続きご丁寧にありがとうございます。 全てコードで行っています。つまり、現状はstryboadにはbuttonだけが配置されているという状態です。 その場合はどのようにすれば良いのでしょうか。 よろしくお願いします
TsukubaDepot

2020/05/15 04:39

ちなみに、このソースコードはなにかを参考にして作られたのでしょうか。 そうであれば、本の名前とか教材の名前やURLも併せて教えていただいた方がいいかもしれません(その内容に併せて指摘できるので)。
退会済みユーザー

退会済みユーザー

2020/05/15 04:43

TsukubaDepot様 ご指摘ありがとうございます。 こちらになります。このコードにbuttonを追加するというプログラムを考えています。 お手数ですがよろしくお願いします。 https://i-app-tec.com/ios/mapkit-userlocation.html
guest

回答1

0

ベストアンサー

Storyboardでボタンを置くと、あとからmapView が上に乗っかってしまい見えなくなってしまいますので、コードで mapView を表示した後にあたらめて階層を変える必要がありそうです。

まず、ボタンのアウトレットを

swift

1class ViewController: UIViewController ,MKMapViewDelegate, 2CLLocationManagerDelegate{ 3 // Storyboardからアウトレットを持ってくる 4 @IBOutlet weak var button: UIButton! 5 6 var locationManager = CLLocationManager()

こんな感じで設置したあと、

swift

1 // MapViewをViewに追加. 2 self.view.addSubview(mapView) 3 4 // ボタンを先頭に持ってくる 5 self.view.bringSubviewToFront(button) 6 }

こんな感じで先頭にもってくれば良いかと思います。


前回もお願いしたかと思いますが、次からはコードをタグで囲むようにお願いします。

投稿2020/05/15 05:45

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問