菜鸟教程小白 发表于 2022-12-13 09:00:25

ios - 使用 UI slider 动态更改 MKCircle 半径


                                            <p><p>我现在正在使用 MapView 进行一个项目。您可以通过 Tab 放置图钉并按住。当您选择引脚时,将出现一个具有一定半径的圆。但现在用户应该决定圆的半径。这应该可以通过 UISlider 实现。</p>

<p>问题是,圆的半径不会动态变化。圆圈出现,您移动 slider ,没有任何反应。取消选择并再次选择引脚,将添加具有新 UISlider 值的另一个环。</p>

<p>当前代码:
在 .h 文件中:</p>

<pre><code>@property (retain, nonatomic) MKCircle *pinCircle;
</code></pre>

<p>在 .m 文件中:</p>

<pre><code>-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {

    _radius.hidden= false;

    CLLocation *pinLocation = [ initWithLatitude:[(MKPointAnnotation*) coordinate].latitude longitude:[(MKPointAnnotation*) coordinate].longitude];
    _pinCircle = ;
    ;
    ;

}

-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
    _radius.hidden= true;
    }

- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id &lt;MKOverlay&gt;)overlay
{
    MKCircleView *circleView = [ initWithOverlay:overlay];
    circleView.strokeColor = ;
    circleView.fillColor = [ colorWithAlphaComponent:0.4];
    return ;
}
</code></pre>

<p>我知道我必须使用这个 Action :</p>

<pre><code>- (IBAction)radiusSliderChange:(id)sender {
    NSLog(@&#34;Slidervalue changed&#34;);
    ;
}
</code></pre>

<p>但这会导致以下错误:</p>

<pre><code>-: unrecognized selector sent to instance 0x18b919d0
</code></pre>

<p>根据 Alejandro F. Carrera 的帖子,我收到以下错误:</p>

<p> <a href="https://www.dropbox.com/s/saxhns992jex606/Bildschirmfoto%202014-09-04%20um%2020.20.21.png?dl=0" rel="noreferrer noopener nofollow">https://www.dropbox.com/s/saxhns992jex606/Bildschirmfoto%202014-09-04%20um%2020.20.21.png?dl=0</a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你必须在初始化时设置为 nil (pinCircle = nil;) 然后你必须检查这个:</p>

<pre><code>-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
   if(pinCircle != nil) // click two annotations
   {
      ;
       _pinCircle = nil;
   }
   _radius = 100; // start value to define
   ;
}

-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
    if(pinCircle != nil)
    {
       ;
       _pinCircle = nil;
    }
}

- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id &lt;MKOverlay&gt;)overlay
{
    MKCircleView *circleView = [ initWithOverlay:overlay];
    circleView.strokeColor = ;
    circleView.fillColor = [ colorWithAlphaComponent:0.4];
    return ;
}
</code></pre>

<p>你已经为此使用了 Storyboard,所以你必须有像 pinCircle 这样的 slider 变量</p>

<pre><code>- (IBAction)radiusSliderChange:(id)sender {
    _radius = _slider.value;// radius property of circle is readonly so you must create other one
    ;
    ;
}

- (void)createCircle:(CLLocationCoordinate)coord
{
    _pinCircle = ;
    ;
    ;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 UIslider 动态更改 MKCircle 半径,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25671328/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25671328/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 UI slider 动态更改 MKCircle 半径