我已经研究过这个问题,遗憾的是我没有得到任何针对这个问题的解决方案。
问题是:
我有一个自定义的MKAnnotationView,其中drawRect被覆盖。我无法使用image属性,因为我有一个名为dotColor的属性会影响注释视图的绘制。
代码:
class CustomAnnotationView: MKAnnotationView {
var dotColor: UIColor!
init(annotation: CustomAnnotation, color: UIColor) {
super.init(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
self.annotation = annotation
frame.size = CGSize(width: 20, height: 20)
dotColor = color
opaque = false
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func drawRect(rect: CGRect) {
if annotation != nil && dotColor != nil {
let context = UIGraphicsGetCurrentContext()
let circleFrame = CGRectInset(rect, 2, 2)//Needs the inset to show the stroke completely
CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor)
CGContextSetStrokeColorWithColor(context, dotColor.CGColor)
CGContextSetLineWidth(context, 3)
CGContextFillEllipseInRect(context, circleFrame)
CGContextStrokeEllipseInRect(context, circleFrame)
}
}
}
但是当我点击地图上的注释视图时,它并没有显示标注(我很确定MKAnnotation有标题。你可以查看这个主题的答案:{{3} })
答案 0 :(得分:-1)
第一件事是colorDot = color
所以,如果你想在mapview' viewForAnnotation
函数中让你的标注显示。
以下是示例代码,您可以查看:
v = MKAnnotationView(annotation: annotation, reuseIdentifier: "here put your identifier")
v!.canShowCallout = true
我不明白你想要改变什么?标注背景颜色或文字或其他东西?
更改标注中元素的正确方法是addSubview
(以编程方式创建UIView或使用xib)
如果在标注中有许多无法访问的内容,添加内容的最佳方式不是框架。尝试先添加图层或UIImage
添加您的资料