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 <MKOverlay>)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(@"Slidervalue changed");
;
}
</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 <MKOverlay>)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]