第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何自定義MKAnnotationView的標(biāo)注氣泡?

如何自定義MKAnnotationView的標(biāo)注氣泡?

躍然一笑 2019-11-21 14:44:03
我目前正在使用mapkit,并且卡住了。我正在使用一個(gè)自定義注釋視圖,并且我想使用image屬性使用自己的圖標(biāo)在地圖上顯示該點(diǎn)。我的工作很好。但是我還想做的是覆蓋默認(rèn)的標(biāo)注視圖(觸摸注釋圖標(biāo)時(shí)標(biāo)題/副標(biāo)題出現(xiàn)的氣泡)。我希望能夠控制標(biāo)注本身:mapkit僅提供對(duì)左側(cè)和右側(cè)輔助標(biāo)注視圖的訪問,但是無法為標(biāo)注氣泡提供自定義視圖,也不能為其提供零大小,或者其他任何方式。我的想法是在my中重寫selectAnnotation / deselectAnnotation MKMapViewDelegate,然后通過調(diào)用自定義注釋視圖來繪制自己的自定義視圖。這有效,但僅當(dāng)在我的自定義批注視圖類中canShowCallout設(shè)置為時(shí)才有效YES。如果我將此設(shè)置為NO,則不會(huì)調(diào)用這些方法(這是我想要的,因此不會(huì)繪制默認(rèn)的標(biāo)注氣泡)。因此,我無法知道用戶是否觸摸了地圖上的我的點(diǎn)(選中了它)或觸摸了一個(gè)不屬于我的注釋視圖的點(diǎn)(選中了它)而沒有顯示默認(rèn)的標(biāo)注氣泡視圖。我嘗試走另一條路,只是自己在地圖上處理所有觸摸事件,但似乎無法正常工作。我讀了其他與在地圖視圖中捕獲觸摸事件有關(guān)的帖子,但它們并不是我想要的。有沒有辦法在繪制之前深入地圖視圖以刪除標(biāo)注氣泡?我很茫然。有什么建議么?我是否缺少明顯的東西?
查看完整描述

3 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

有一個(gè)更簡(jiǎn)單的解決方案。


創(chuàng)建一個(gè)自定義UIView(用于您的標(biāo)注)。


然后創(chuàng)建的子類MKAnnotationView,并重寫setSelected如下:


- (void)setSelected:(BOOL)selected animated:(BOOL)animated

{

    [super setSelected:selected animated:animated];


    if(selected)

    {

        //Add your custom view to self...

    }

    else

    {

        //Remove your custom view...

    }

}

景氣,工作完成了。


查看完整回答
反對(duì) 回復(fù) 2019-11-21
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

繼續(xù)@TappCandy出色的簡(jiǎn)單答案,如果您想以與默認(rèn)氣泡相同的方式為氣泡設(shè)置動(dòng)畫,則我制作了以下動(dòng)畫方法:


- (void)animateIn

{   

    float myBubbleWidth = 247;

    float myBubbleHeight = 59;


    calloutView.frame = CGRectMake(-myBubbleWidth*0.005+8, -myBubbleHeight*0.01-2, myBubbleWidth*0.01, myBubbleHeight*0.01);

    [self addSubview:calloutView];


    [UIView animateWithDuration:0.12 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^(void) {

        calloutView.frame = CGRectMake(-myBubbleWidth*0.55+8, -myBubbleHeight*1.1-2, myBubbleWidth*1.1, myBubbleHeight*1.1);

    } completion:^(BOOL finished) {

        [UIView animateWithDuration:0.1 animations:^(void) {

            calloutView.frame = CGRectMake(-myBubbleWidth*0.475+8, -myBubbleHeight*0.95-2, myBubbleWidth*0.95, myBubbleHeight*0.95);

        } completion:^(BOOL finished) {

            [UIView animateWithDuration:0.075 animations:^(void) {

                calloutView.frame = CGRectMake(-round(myBubbleWidth/2-8), -myBubbleHeight-2, myBubbleWidth, myBubbleHeight);

            }];

        }];

    }];

}

它看起來相當(dāng)復(fù)雜,但是只要您將標(biāo)注氣泡的點(diǎn)設(shè)計(jì)為居中,您就應(yīng)該可以替換myBubbleWidth并myBubbleHeight以自己的大小工作。并記住確保子視圖的autoResizeMask屬性設(shè)置為63(即“全部”),以便它們?cè)趧?dòng)畫中正確縮放。


:-喬


查看完整回答
反對(duì) 回復(fù) 2019-11-21
  • 3 回答
  • 0 關(guān)注
  • 1042 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)