gpt4 book ai didi

iOS - 解决方法 MKOverlayRenderer 和 Alpha 属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:03:16 25 4
gpt4 key购买 nike

在 MKOverlayRenderer 已经传递给 Map 之后,如何访问和修改它的 alpha 属性?

事实上,我可以在 rendererForOverlay 方法中修改 alpha 属性:

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKTileOverlay class]]) {

MKTileOverlayRenderer *renderer = [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay];
renderer.alpha = 0.6;
return renderer;
}
return nil;
}

但是只有当我向 mapView 添加 Overlay 时才会调用此方法吗?

所以我的问题是:有没有一种方法可以更改和设置此 alpha 属性的值,即使我的叠加层已呈现在 map 上?

我尝试将渲染器添加到 NSMutableArray 中:

 - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKTileOverlay class]]) {
_allRenderer = [[NSMutableArray alloc] init];
MKTileOverlayRenderer *renderer = [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay];

renderer.alpha = 0.0;
[_allRenderer addObject:renderer];
return renderer;
}
return nil;
}

然后我可以通过调用我制作的这个方法来改变透明度:

-(void)changeAlpha:(NSUInteger)index : (BOOL)isOpaque {

if (isOpaque)
[[_allRenderer objectAtIndex:index] setAlpha:0.0];
else
[[_allRenderer objectAtIndex:index] setAlpha:1.0];
}

有没有更好的方法来做到这一点?仅设置 alpha 值似乎是一个缓慢的过程。

实际上我想动态地将 OverlayRenderer 的 alpha 值从 0 切换到 1,这样我就可以显示 1 个 Overlay、隐藏它、显示另一个 Overlay、隐藏它等等...

最佳答案

所以基本上您可以做的是:而不是尝试设置不同的 alpha。

您可以在叠加层和移除叠加层以及为 alpha 设置初始值之间切换。

作为引用,请尝试此链接: https://github.com/mapbox/mbxmapkit/issues/7

还有这个:https://github.com/mapbox/mbxmapkit/issues/39

关于iOS - 解决方法 MKOverlayRenderer 和 Alpha 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40039603/

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