Подпредставление Adding к MKMapView это выше карты, но ниже представлений аннотации?

Для приложения я создаю, у меня есть пользовательская "старая карта" PNG эффекта, который я хотел бы наложить на представлении MKMapView. К сожалению, никакой способ, которым я попытался сделать, это точно правильно:

  1. Добавьте подпредставление к MKMapView (проблема: UIImageView для PNG размещается выше контактов Аннотации, который выглядит странным
  2. Сделайте изображение самим представлением аннотации и поместите его ниже других (проблема: на прокрутке я должен переместить изображение представления аннотации, и некоторое время существует только обычная карта вместо такого, как в старые добрые времена эффекта).

То, что я в основном хочу выполнить, имеет подпредставление, которое разделено на уровни выше maptiles, но ниже представлений аннотации, и это будет содержать устойчивый, в то время как пользователь прокручивает вокруг — какие-либо мысли?

17
задан Zeppomedio 26 October 2009 в 00:45
поделиться

1 ответ

Обратите внимание, что все Mkmapview Mkmapview SubViews иерархия, аннотации, поведение и т. Д. Выруются во внутреннем частном MkmapviewInternal класс, поэтому изменение чего-либо (так, как я предлагаю или другой) в этой структуре может вызвать ваш Приложение для отклонения от AppStore.

У меня нет полного решения, просто идея. Моя идея состоит в том, чтобы сделать вид наложения иметь одинаковое руководство, что и представления аннотации, и убедитесь, что аннотации будут размещены на нашем наложении. В MkmapviewDeleggate мы реализуем:

- (void)mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views{
    if (views.count > 0){
        UIView* tView = [views objectAtIndex:0];

        UIView* parView = [tView superview];
        UIView* overlay = [tView viewWithTag:2000];
        if (overlay == nil){
            overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:MY_IMAGE_NAME]];
            overlay.frame = parView.frame; //frame equals to (0,0,16384,16384)
            overlay.tag = 2000;
            overlay.alpha = 0.7;
            [parView addSubview:overlay];
            [overlay release];
        }

        for (UIView* view in views)
            [parView bringSubviewToFront:view];
    }
}

Этот код делает половину того, что вы хотите - вы получаете представление, размещенное между плитками и аннотациями карты. Оставшаяся задача - это изменение пользовательских накладных кадров в соответствии с прокруткой / масштабированием карты (я буду публиковать, если я найду путь).

4
ответ дан 30 November 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: