2

iOS 9 でピンの色のコードを変更する方法がわかりません (最近 Apple がコードを変更したため)。私はまだ Swift に慣れていません。pinTintColorだから、今自分のコードに統合する方法がわかりません。

私のコードの下に見つけてください:

import UIKit
import MapKit

class ViewController: UIViewController, MKMapViewDelegate {
    @IBOutlet var map: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let annotation = MKPointAnnotation()
        let latitude:CLLocationDegrees = 40.5
        let longitude:CLLocationDegrees = -74.6
        let latDelta:CLLocationDegrees = 150
        let lonDelta:CLLocationDegrees = 150
        let span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta)
        let location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
        let region:MKCoordinateRegion = MKCoordinateRegionMake(location, span)

        map.setRegion(region, animated: false)

        annotation.coordinate = location
        annotation.title = "Niagara Falls"
        annotation.subtitle = "One day bla bla"
        map.addAnnotation(annotation)
    }

    func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
        // simple and inefficient example

        let annotationView = MKPinAnnotationView()

        annotationView.pinColor = .Purple

        return annotationView
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
4

1 に答える 1

7

pinColorは iOS 9 で廃止されましたpinTintColor。代わりに使用してください。

例:

let annotationView = MKPinAnnotationView()
annotationView.pinTintColor = UIColor.purpleColor()

OP は特に iOS 9 を要求しますが、次のようにすれば、iOS 9 より前の「非推奨」メソッドを確実に呼び出すことができます。

if #available(iOS 9, *) {
    annotationView.pinTintColor = UIColor.purpleColor()
} else {
    annotationView.pinColor = .Purple
}

ここで具体的に尋ねるように、最小限のターゲットが iOS 9 である場合、上記は冗長になります。Xcode は、参考までに、警告とともにそれを通知します。

于 2015-09-28T03:46:33.437 に答える