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) { }
}
mapView はどのようにして配置されているのでしょうか。
StoryBoard上での実装であれば、ボタンはmapViewの上に置いても一応問題なく機能するはずです。
全てコード ベースなのか、Storyboard併用なのかをご質問に追記していただいた方が良いかと思います。
また、作りかけでもコードがあればそれを提示された方がより適切な回答が得られるかと思います。
TsukubaDepot様
昨日に引き続きご丁寧にありがとうございます。
全てコードで行っています。つまり、現状はstryboadにはbuttonだけが配置されているという状態です。
その場合はどのようにすれば良いのでしょうか。
よろしくお願いします
ちなみに、このソースコードはなにかを参考にして作られたのでしょうか。
そうであれば、本の名前とか教材の名前やURLも併せて教えていただいた方がいいかもしれません(その内容に併せて指摘できるので)。
TsukubaDepot様
ご指摘ありがとうございます。
こちらになります。このコードにbuttonを追加するというプログラムを考えています。
お手数ですがよろしくお願いします。
https://i-app-tec.com/ios/mapkit-userlocation.html
回答1件
あなたの回答
tips
プレビュー