如何将子class改名为class? / 'MKPinAnnotationView' 在 iOS 15.0 中被弃用:重命名为“MKMarkerAnnotationView”
How to subclass a renamed class? / 'MKPinAnnotationView' was deprecated in iOS 15.0: renamed to 'MKMarkerAnnotationView‘
MKPinAnnotationView
在 iOS 15 中重命名为 MKMarkerAnnotationView
。
直到 iOS 14,我将 class 分 MKPinAnnotationView
为
class MyAnnotationView: MKPinAnnotationView {
// …
}
问题:
如果我的应用程序编译为 iOS 14,我想声明 MyAnnotationView
如上。
但是,如果编译为 iOS 15,我必须使用
class MyAnnotationView: MKMarkerAnnotationView {
// …
}
如何实现?
在指令级别,我可以使用类似
的东西
if #available(iOS 15, *) {
// iOS 15
} else {
// iOS 14
}
但在 class 级别上,显然只有
@available(iOS 15, *)
class MyAnnotationView: MKMarkerAnnotationView {
似乎可以让我编译 class 如果 iOS 15 可用,但显然我无法避免编译 class MyAnnotationView: MKPinAnnotationView {
如果 iOS 15 可用.
那么 Swift 是如何处理的?
正如 @Paulw11 在其他回答中指出的那样,MKMarkerAnnotationView
自 iOS 11
以来可用。因此无需 iOS 15
即可使用它。
这部分仍然与其他情况相关,例如 @dfd 在 iOS 14
和更早版本中提到的图像选择器。
没有想象中那么漂亮,但还是值得一试。
import MapKit
#if canImport(CoreLocationUI) // Hack for iOS 15?
public typealias BaseAnnotationView = MKMarkerAnnotationView
#else
public typealias BaseAnnotationView = MKPinAnnotationView
#endif
class MyAnnotationView: BaseAnnotationView {
}
MKPinAnnotationView
尚未重命名。
MKPinAnnotationView
在 iOS 15 中 已弃用 ,但您仍然可以使用它。弃用只是意味着不建议您将它用于新应用程序,它可能会在未来消失并且您不能期待任何增强。
MKMarkerAnnotationView
从 iOS 11 开始可用,因此除非您的应用针对 iOS 10 或更早版本,否则您可以简单地切换到使用它而不是 MKPinAnnotationView
MKPinAnnotationView
在 iOS 15 中重命名为 MKMarkerAnnotationView
。
直到 iOS 14,我将 class 分 MKPinAnnotationView
为
class MyAnnotationView: MKPinAnnotationView {
// …
}
问题:
如果我的应用程序编译为 iOS 14,我想声明 MyAnnotationView
如上。
但是,如果编译为 iOS 15,我必须使用
class MyAnnotationView: MKMarkerAnnotationView {
// …
}
如何实现?
在指令级别,我可以使用类似
的东西if #available(iOS 15, *) {
// iOS 15
} else {
// iOS 14
}
但在 class 级别上,显然只有
@available(iOS 15, *)
class MyAnnotationView: MKMarkerAnnotationView {
似乎可以让我编译 class 如果 iOS 15 可用,但显然我无法避免编译 class MyAnnotationView: MKPinAnnotationView {
如果 iOS 15 可用.
那么 Swift 是如何处理的?
正如 @Paulw11 在其他回答中指出的那样,MKMarkerAnnotationView
自 iOS 11
以来可用。因此无需 iOS 15
即可使用它。
这部分仍然与其他情况相关,例如 @dfd 在 iOS 14
和更早版本中提到的图像选择器。
没有想象中那么漂亮,但还是值得一试。
import MapKit
#if canImport(CoreLocationUI) // Hack for iOS 15?
public typealias BaseAnnotationView = MKMarkerAnnotationView
#else
public typealias BaseAnnotationView = MKPinAnnotationView
#endif
class MyAnnotationView: BaseAnnotationView {
}
MKPinAnnotationView
尚未重命名。
MKPinAnnotationView
在 iOS 15 中 已弃用 ,但您仍然可以使用它。弃用只是意味着不建议您将它用于新应用程序,它可能会在未来消失并且您不能期待任何增强。
MKMarkerAnnotationView
从 iOS 11 开始可用,因此除非您的应用针对 iOS 10 或更早版本,否则您可以简单地切换到使用它而不是 MKPinAnnotationView