2017-11-13 26 views
1

iOS 응용 프로그램을하고 있습니다. 엑스 코드 9.1에서 나는MKMapView의 눈금이 표시되지 않습니다.

let mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)) 
mapView.isUserInteractionEnabled = false 
mapView.mapType = .satellite 
mapView.showsCompass = false 
mapView.showsScale = true 
view.addSubview(mapView) 

하여 MKMapView를 생성하지만 시뮬레이터를 실행하면 규모가 표시되지 않습니다 나는 로그의 세 가지 메시지를 얻을 :

수 가장자리 9에서하지 삽입 나침반

은 가장자리에서하지 삽입 된 규모는 9

코너에서 법적 속성을 인세 할 수 없습니다 수 4

나침반이 예상대로 표시되지 않지만 mapView.showsCompasstrue으로 변경하면 표시되지 않습니다. 그러나 법적 링크가 표시됩니다. 내가 여기서 무엇을 놓치고 있니? 나는 그것이 iOS 11에 도입 된 새로운 안전 영역에 관한 것이라고 생각하지만, 전체 화면을 덮고 싶은보기에 이것이 얼마나 중요한지는 알 수 없습니다. 기본적으로 확대하면서 아이폰 OS 10에서

+0

Pain Free Constraints with Layout Anchors

해피 코딩 ...

을 나침반은지도가 회전 된 경우에만 표시됩니다. ay에서 북쪽으로 확대/축소하는 동안 눈금이 표시됩니다. MapKit의 새로운 기능에 대한 WWDC 세션을 권장합니다. 나는 당신이 그 메시지를 무시할 수 있다고 생각합니다. – Paulw11

+0

WWDC 세션에서는 나침반 버튼을 추가하여 나침반을 항상 표시하는 방법을 설명합니다 – Paulw11

+0

WWDC 세션을 볼 것입니다. 그러나 질문은 축척을 표시하는 것이 었습니다. 코드는 나침반을 표시하지 않도록 설정하므로 문제가되지 않습니다. –

답변

0

오늘 규모와 같은 문제가 있었다. 나는 그 눈금을 항상 보길 원합니다. 그것을 해결하기 위해 몇 시간을 들여야합니다. 그래서 코드를 여기에 추가합니다. 누군가를 위해 같은 문제가 생기면. 이 스레드에서

: Use Safe Area Layout programmatically

이 웹 사이트 :

는 몇 가지 힌트를 얻었다 아이폰 OS 11에서 하디

// "self.MapOnScreen" refers to the map currently displayed 

// check if we have to deal with the scale 
if #available(iOS 11.0, *) { 

    // as we will change the UI, ensure it's on main thread 
    DispatchQueue.main.async(execute: { 

     // switch OFF the standard scale (otherwise both will be visible when zoom in/out) 
     self.MapOnScreen.showsScale = false 

     // build the view 
     let scale = MKScaleView(mapView: self.MapOnScreen) 

     // we want to use autolayout 
     scale.translatesAutoresizingMaskIntoConstraints = false 

     // scale should be visible all the time 
     scale.scaleVisibility = .visible // always visible 

     // add it to the map 
     self.MapOnScreen.addSubview(scale) 

     // get the current safe area of the map 
     let guide = self.MapOnScreen.safeAreaLayoutGuide 

     // Activate this array of constraints, which at the time removes leftovers if any 
     NSLayoutConstraint.activate(
      [ 
       // LEFT (I do not want a change if right-to-left language) margin with an offset to safe area 
       // alternative would be ".leadingAnchor", which switches to the right margin, if right-to-left language is used   
       scale.leftAnchor.constraint(equalTo: guide.leftAnchor, constant: 16.0), 

       // right edge will be the middle of the map 
       scale.rightAnchor.constraint(equalTo: guide.centerXAnchor), 

       // top margin is the top safe area 
       scale.topAnchor.constraint(equalTo: guide.topAnchor), 

       // view will be 20 points high 
       scale.heightAnchor.constraint(equalToConstant: 20.0) 
      ] 
     ) 
    }) 
}