将 PinTintColor 调整为 mapkit 的 Ray Wenderlich 教程
Adapting PinTintColor to Ray Wenderlich tutorial for mapkit
我正在使用教程来构建我的第一个应用程序。 http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial
我搜索过 pintintcolor 但没有找到。
基本上本教程使用此代码设置颜色
// pinColor for disciplines: Sculpture, Plaque, Mural, Monument, other
func pinColor() -> MKPinAnnotationColor{
switch discipline {
case "Sculpture", "Plaque":
return .Red
case "Mural", "Monument":
return .Purple
default:
return .Green
麻烦的是,这就是苹果在开发者网站上的内容
https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_11/Swift/MapKit.html
修改后的MKPinAnnotationView
宣言
发件人:
class MKPinAnnotationView : MKAnnotationView {
var pinColor: MKPinAnnotationColor
var animatesDrop: Bool
}
收件人:
class MKPinAnnotationView : MKAnnotationView {
class func redPinColor() -> NSColor
class func greenPinColor() -> NSColor
class func purplePinColor() -> NSColor
var pinTintColor: NSColor!
var animatesDrop: Bool
var pinColor: MKPinAnnotationColor
}
Ray Wenderlich 教程的设置有点不同,所以我不太明白如何按照相同的方式进行设置。我尝试了几种不同的配置,但无法正常工作。
感谢任何帮助
干杯
不要使用 属性 pinColor(已弃用),而是使用 属性 pinTintColor (iOS9)
//view.pinColor = MKPinAnnotationColor.Green
view.pinTintColor = UIColor.greenColor()
//UIColor functions
public class func blackColor() -> UIColor // 0.0 white
public class func darkGrayColor() -> UIColor // 0.333 white
public class func lightGrayColor() -> UIColor // 0.667 white
public class func whiteColor() -> UIColor // 1.0 white
public class func grayColor() -> UIColor // 0.5 white
public class func redColor() -> UIColor // 1.0, 0.0, 0.0 RGB
public class func greenColor() -> UIColor // 0.0, 1.0, 0.0 RGB
public class func blueColor() -> UIColor // 0.0, 0.0, 1.0 RGB
public class func cyanColor() -> UIColor // 0.0, 1.0, 1.0 RGB
public class func yellowColor() -> UIColor // 1.0, 1.0, 0.0 RGB
public class func magentaColor() -> UIColor // 1.0, 0.0, 1.0 RGB
public class func orangeColor() -> UIColor // 1.0, 0.5, 0.0 RGB
public class func purpleColor() -> UIColor // 0.5, 0.0, 0.5 RGB
public class func brownColor() -> UIColor // 0.6, 0.4, 0.2 RGB
public class func clearColor() -> UIColor // 0.0 white, 0.0 alpha
这里是全图:
import MapKit
class MyAnnotation: MKAnnotation, NSObject
{
let identifier: String
let title: String?
let subtitle: String?
let coordinate: CLLocationCoordinate2D
init(identifier: String, title: String, subtitle: String, coordinate: CLLocationCoordinate2D)
{
self.identifier = identifier
self.title = title
self.subtitle = subtitle
self.coordinate = coordinate
super.init()
}
func mapItem() -> MKMapItem
{
let addressDictionary = [String(CNPostalAddressStreetKey): self.subtitle!]
let placemark = MKPlacemark(coordinate: self.coordinate, addressDictionary: addressDictionary)
let mapItem = MKMapItem(placemark: placemark)
mapItem.name = self.title
return mapItem
}
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
{
if let annotation = annotation as? MyAnnotation
{
let identifier = annotation.identifier
var view = MKPinAnnotationView()
if let dequeuedView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as! MKPinAnnotationView!
{
view = dequeuedView
view.annotation = annotation
}
else
{
view = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
view.animatesDrop = true
view.canShowCallout = true
switch identifier
{
case "Sculpture", "Plaque":
view.pinTintColor = UIColor.redColor()
case "Mural", "Monument":
view.pinTintColor = UIColor.purpleColor()
default:
view.pinTintColor = UIColor.greenColor()
}
}
return view
}
return nil
}
万一其他人正在学习本教程并看到以下错误:“'MKPinAnnotationColor' 在 iOS 9.0 中已弃用:改用 MKPinAnnotationView 的 pinTintColor”
只需将 pinColor 例程更新为 return UIColor。
func pinColor() -> UIColor {
switch discipline {
case "Sculpture", "Plaque":
return UIColor.redColor()
case "Mural", "Monument":
return UIColor.purpleColor()
default:
return UIColor.greenColor()
}
}
然后进行相应的调用来设置 pinTintColor,如下所示:
view.pinTintColor = annotation.pinColor()
我正在使用教程来构建我的第一个应用程序。 http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial
我搜索过 pintintcolor 但没有找到。
基本上本教程使用此代码设置颜色
// pinColor for disciplines: Sculpture, Plaque, Mural, Monument, other
func pinColor() -> MKPinAnnotationColor{
switch discipline {
case "Sculpture", "Plaque":
return .Red
case "Mural", "Monument":
return .Purple
default:
return .Green
麻烦的是,这就是苹果在开发者网站上的内容
https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_11/Swift/MapKit.html
修改后的MKPinAnnotationView 宣言
发件人:
class MKPinAnnotationView : MKAnnotationView {
var pinColor: MKPinAnnotationColor
var animatesDrop: Bool
}
收件人:
class MKPinAnnotationView : MKAnnotationView {
class func redPinColor() -> NSColor
class func greenPinColor() -> NSColor
class func purplePinColor() -> NSColor
var pinTintColor: NSColor!
var animatesDrop: Bool
var pinColor: MKPinAnnotationColor
}
Ray Wenderlich 教程的设置有点不同,所以我不太明白如何按照相同的方式进行设置。我尝试了几种不同的配置,但无法正常工作。
感谢任何帮助
干杯
不要使用 属性 pinColor(已弃用),而是使用 属性 pinTintColor (iOS9)
//view.pinColor = MKPinAnnotationColor.Green
view.pinTintColor = UIColor.greenColor()
//UIColor functions
public class func blackColor() -> UIColor // 0.0 white
public class func darkGrayColor() -> UIColor // 0.333 white
public class func lightGrayColor() -> UIColor // 0.667 white
public class func whiteColor() -> UIColor // 1.0 white
public class func grayColor() -> UIColor // 0.5 white
public class func redColor() -> UIColor // 1.0, 0.0, 0.0 RGB
public class func greenColor() -> UIColor // 0.0, 1.0, 0.0 RGB
public class func blueColor() -> UIColor // 0.0, 0.0, 1.0 RGB
public class func cyanColor() -> UIColor // 0.0, 1.0, 1.0 RGB
public class func yellowColor() -> UIColor // 1.0, 1.0, 0.0 RGB
public class func magentaColor() -> UIColor // 1.0, 0.0, 1.0 RGB
public class func orangeColor() -> UIColor // 1.0, 0.5, 0.0 RGB
public class func purpleColor() -> UIColor // 0.5, 0.0, 0.5 RGB
public class func brownColor() -> UIColor // 0.6, 0.4, 0.2 RGB
public class func clearColor() -> UIColor // 0.0 white, 0.0 alpha
这里是全图:
import MapKit
class MyAnnotation: MKAnnotation, NSObject
{
let identifier: String
let title: String?
let subtitle: String?
let coordinate: CLLocationCoordinate2D
init(identifier: String, title: String, subtitle: String, coordinate: CLLocationCoordinate2D)
{
self.identifier = identifier
self.title = title
self.subtitle = subtitle
self.coordinate = coordinate
super.init()
}
func mapItem() -> MKMapItem
{
let addressDictionary = [String(CNPostalAddressStreetKey): self.subtitle!]
let placemark = MKPlacemark(coordinate: self.coordinate, addressDictionary: addressDictionary)
let mapItem = MKMapItem(placemark: placemark)
mapItem.name = self.title
return mapItem
}
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
{
if let annotation = annotation as? MyAnnotation
{
let identifier = annotation.identifier
var view = MKPinAnnotationView()
if let dequeuedView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as! MKPinAnnotationView!
{
view = dequeuedView
view.annotation = annotation
}
else
{
view = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
view.animatesDrop = true
view.canShowCallout = true
switch identifier
{
case "Sculpture", "Plaque":
view.pinTintColor = UIColor.redColor()
case "Mural", "Monument":
view.pinTintColor = UIColor.purpleColor()
default:
view.pinTintColor = UIColor.greenColor()
}
}
return view
}
return nil
}
万一其他人正在学习本教程并看到以下错误:“'MKPinAnnotationColor' 在 iOS 9.0 中已弃用:改用 MKPinAnnotationView 的 pinTintColor”
只需将 pinColor 例程更新为 return UIColor。
func pinColor() -> UIColor {
switch discipline {
case "Sculpture", "Plaque":
return UIColor.redColor()
case "Mural", "Monument":
return UIColor.purpleColor()
default:
return UIColor.greenColor()
}
}
然后进行相应的调用来设置 pinTintColor,如下所示:
view.pinTintColor = annotation.pinColor()