gpt4 book ai didi

ios - How to subclass a renamed class?/'MKPinAnnotationView' was deprecated in iOS 15.0 : renamed to 'MKMarkerAnnotationView‘

转载 作者:行者123 更新时间:2023-12-04 01:01:56 26 4
gpt4 key购买 nike

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 在其他回答中指出的那样,MKMarkerAnnotationViewiOS 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com