菜鸟教程小白 发表于 2022-12-13 10:27:20

ios - 尝试更改 MKPointAnnotation 颜色但丢失标题


                                            <p><p>我正在尝试将我的图钉颜色更改为紫色,但当我这样做时,我会失去标题。代码是:</p>

<pre><code>- (void)viewDidLoad {
    ;

    self.navigationController.navigationBarHidden=YES;

    //init the location manager
    self.locationManager = [ init];
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    ;
    self.mapView.showsUserLocation=YES;

    self.userGeoPoint=self.message[@&#34;userLocation&#34;];
    self.pinView = [ init];

    self.pinView.title=self.message[@&#34;fromUser&#34;];
    self.coord = CLLocationCoordinate2DMake(self.userGeoPoint.latitude, self.userGeoPoint.longitude);
    self.pinView.coordinate=self.coord;
    //use a slight delay for more dramtic zooming
    ;
}

-(void)addPin{

    ;
    ;
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.coord, 800, 800);
    animated:YES];

}

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id&lt;MKAnnotation&gt;)annotationPoint
{
    if (])//keep the user as default
      return nil;

    static NSString *annotationIdentifier = @&#34;annotationIdentifier&#34;;
    MKPinAnnotationView *pinView = [initWithAnnotation:annotationPoint reuseIdentifier:annotationIdentifier];
    pinView.pinColor = MKPinAnnotationColorPurple;
    //now we can throw an image in there

    return pinView;
}
</code></pre>

<p>我尝试为 MKPinAnnotation 设置标题属性,但没有。无论如何我可以解决这个问题吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在<code>viewForAnnotation</code>中,需要将<code>canShowCallout</code>设置为<code>YES</code>(默认为<code>NO</code>):</code> p>

<pre><code>pinView.pinColor = MKPinAnnotationColorPurple;
pinView.canShowCallout = YES;
</code></pre>

<p><br/>
</p><hr/>
几个不相关的点:<p></p>

<ol>
<li>看起来您有一个名为 <code>pinView</code> 的属性,类型为 <code>MKPointAnnotation</code>,用于在 <code>viewDidLoad</code> 中创建注释对象。然后在 <code>viewForAnnotation</code> 中,您有一个名为 <code>pinView</code> 的局部变量,类型为 <code>MKPinAnnotationView</code>。虽然这里没有命名冲突,但它会导致并暗示一些概念上的困惑。 <code>MKPointAnnotation</code> 是一个注解 <em>model</em> 类,而 <code>MKPinAnnotationView</code> 是一个注解 <em>view</em> 类——它们是完全不同的东西。例如,最好将注释属性命名为 <code>pin</code> 或 <code>userAnnotation</code>。</li>
<li><p><code>viewForAnnotation</code>中的这条注释:</p>

<pre><code>//now we can throw an image in there
</code></pre>

<p>似乎暗示您此时可以在 View 中设置自定义图像。不建议在 <code>MKPinAnnotationView</code> 中设置自定义图像,因为该类旨在以三种颜色之一显示默认图钉图像。要使用自定义图像,请创建一个普通的 <code>MKAnnotationView</code>。</p></li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 尝试更改 MKPointAnnotation 颜色但丢失标题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29315590/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29315590/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 尝试更改 MKPointAnnotation 颜色但丢失标题