На рисунке MKmapView Overlay показаны цветные патчи iOS 10

введите описание изображения здесь

Я рисую MKPolyLine над MKMapView. До того, как iOS 10 работает нормально. В iOS 10 показаны цветные патчи, кроме маршрутов.

 - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
 {
 [![enter image description here][1]][1]if ([overlay isKindOfClass:[MKPolyline class]]) {
    MKPolyline *route = overlay;
    @try {

        MKPolylineRenderer *routeRenderer = [[MKPolylineRenderer alloc] initWithPolyline:route];
        routeRenderer.strokeColor = [UIColor colorWithRed:20/255.0 green:153/255.0 blue:255/255.0 alpha:1.0];
        routeRenderer.lineWidth = 3;
        [routeRenderer setNeedsDisplay];
        return routeRenderer;
    }
    @catch (NSException *exception) {
        NSLog(@"exception :%@",exception.debugDescription);
    }

}
else return nil;
}

Ответ 1

Похоже на ошибку IOS 10, я трачу много времени, чтобы "взломать" эту ошибку.

Я нашел только одно решение, когда я перерисовываю MKPolyline (удаляю старый и добавляю новый), он должен быть вызван в dispatch_after, похоже, что он должен быть перерисован при создании карты. (Имхо)

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ // Add MKPolyline to mapView });

Я тоже перерисовываю MKPolyline при вызове делегата mapView

- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered

Требуется больше тестов, но он выглядит так:

Ответ 2

У меня возникла одна и та же проблема: проблема в том, что код, добавляющий наложения, вызывался из viewDidLoad. Как только я переместил код в viewDidAppear, проблема была решена.