作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
MKPinAnnotationView
在 iOS 15 中重命名为 MKMarkerAnnotationView
。
在 iOS 14 之前,我将 MKPinAnnotationView
子类化为
class MyAnnotationView: MKPinAnnotationView {
// …
}
问题:
如果我的应用程序编译为 iOS 14,我想像上面那样声明 MyAnnotationView
。
但是,如果它被编译为 iOS 15,我必须使用
class MyAnnotationView: MKMarkerAnnotationView {
// …
}
如何实现?
在指令级别,我可以使用类似的东西
if #available(iOS 15, *) {
// iOS 15
} else {
// iOS 14
}
但在类层面上,显然只有类似的东西
@available(iOS 15, *)
class MyAnnotationView: MKMarkerAnnotationView {
如果 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 {
}
关于ios - How to subclass a renamed class?/'MKPinAnnotationView' was deprecated in iOS 15.0 : renamed to 'MKMarkerAnnotationView‘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68047982/
我是一名优秀的程序员,十分优秀!