高仿美團(tuán)<四>

粉友們我又回來了。國慶回莆田老家?guī)滋鞗]有coding就感覺手癢+滿滿的罪惡感劫灶。這個我里我想對所有的簡友(尤其是"只因我為足球而生")和我自己說聲抱歉吠各。在高仿美團(tuán)三里面就說要把github地址貼出來音同。然后一直拖延到現(xiàn)在。優(yōu)秀是一種習(xí)慣镐躲。很明顯我還需努力。這段時間我想了好多好多侍筛。什么都想做什么都止步不前萤皂。這篇最想和大家共勉的一句是:

相信自己。專注一點(diǎn)匣椰,再專注一點(diǎn)裆熙,你離成功就會更近一點(diǎn)。

話不多說了上效果了:


自定義氣泡

機(jī)上一個版本說我會獨(dú)立出來講下這個東東禽笑,覺得在這里說下也很合適
首先拋開項目不談:
一步一步來怎么畫這個氣泡的呢入录?

1.自定義氣泡
2.自定義標(biāo)注

屏幕快照 2015-10-07 21.25.30.png

很明顯他是一個view,所有就自定義一個view然后繼承于UIView
代碼如下:

- (void)drawRect:(CGRect)rect {
    [self drawInContext:UIGraphicsGetCurrentContext()];
    
    self.layer.shadowColor = [[UIColor clearColor] CGColor];
    self.layer.shadowOpacity = 1.0;
    self.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);

}

-(void)drawInContext:(CGContextRef)context{
    //設(shè)置當(dāng)前圖形的寬度
    CGContextSetLineWidth(context, 2.0);
    //填充泡泡顏色并設(shè)置透明度
   // CGContextSetFillColorWithColor(context, [UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:0.8].CGColor);
    //填充的顏色
    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);

    //
    [self getDrawPath:context];

    //填充形狀內(nèi)的顏色
    CGContextFillPath(context);
}
//  200, 70
-(void)getDrawPath:(CGContextRef)context{
    //取出當(dāng)前的圖形大小
    CGRect rrect = self.bounds;
    NSLog(@"%f", self.frame.size.width);
    NSLog(@"%f", self.frame.size.height);

    //設(shè)置園弧度
    CGFloat radius = 30.0;
    
    CGFloat minx = CGRectGetMinX(rrect),//0
    //中點(diǎn)
    midx = CGRectGetMidX(rrect),//100
    //最大的寬度的X
    maxx = CGRectGetMaxX(rrect);//200
    CGFloat miny = CGRectGetMinY(rrect),//0
    //最大的高度Y
    maxy = CGRectGetMaxY(rrect)-kArrorHeight;//60
    
    //1.畫向下的三角形
    //2.設(shè)置起點(diǎn)三角形的右邊點(diǎn)為起點(diǎn)
    CGContextMoveToPoint(context, midx+kArrorHeight, maxy);
    //3.連線 右邊點(diǎn)  ->連最下面上下面的點(diǎn)
    CGContextAddLineToPoint(context, midx, maxy+kArrorHeight);//畫直線
    //4.最下面的點(diǎn)連上  最左邊的點(diǎn)佳镜。
    CGContextAddLineToPoint(context, midx-kArrorHeight, maxy);
    
    //畫4個圓弧
    //    CGContextAddArcToPoint(context, x1, y1, x2, y2, CGfloat radius );//畫完后 current point不在minx,miny僚稿,而是在圓弧結(jié)束的地方

    CGContextAddArcToPoint(context, minx, maxy, minx, miny, radius);//畫完后 current point不在minx,miny,而是在圓弧結(jié)束的地方
    CGContextAddArcToPoint(context, minx, miny, maxx, miny, radius);
    CGContextAddArcToPoint(context, maxx, miny, maxx, maxy, radius);
    CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
    CGContextClosePath(context);
}

注釋已經(jīng)很清楚了蟀伸。
自定義氣泡已經(jīng)有了接下來就自定義標(biāo)注蚀同。

百度原始的標(biāo)注效果圖
/**
 *  通過mapView快速創(chuàng)建一個annotationView
 */
+(instancetype)annotationViewWithMapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[BMKPointAnnotation class]])
    {
        static NSString *reuseIndetifier = @"annotationReuseIndetifier";
        JFAnnotationView *annotationView = (JFAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseIndetifier];
        if (annotationView == nil)
        {
            annotationView = [[JFAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIndetifier];
        }
        if ([annotation isKindOfClass:[JFAnnotation class]]){
            annotationView.jfannotation = (JFAnnotation *)annotation;
        }
        annotationView.canShowCallout = NO;
     ###只要只需這一句是不是很easy 
   annotationView.image = [UIImage imageNamed:@"icon_map_cateid_1"];

        // 設(shè)置中?心點(diǎn)偏移,使得標(biāo)注底部中間點(diǎn)成為經(jīng)緯度對應(yīng)點(diǎn)
        
        // annotationView.centerOffset = CGPointMake(0, -18);
        return annotationView;
    }
    return nil;
}

那么標(biāo)注和氣泡怎么關(guān)聯(lián)在一起?

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

    if (self.selected == selected) {
        return;
    }
    if (selected) {
        if (self.calloutView == nil) {
            self.calloutView = [[JFCalloutView alloc] initWithFrame:CGRectMake(0, 0, kCalloutWidth, kCalloutHeight)];
            
            self.calloutView.center = CGPointMake(CGRectGetWidth(self.bounds) / 2.f + self.calloutOffset.x,-CGRectGetHeight(self.calloutView.bounds) / 2.f + self.calloutOffset.y);
        }
        NSString *imgUrl = [self.jfannotation.jfModel.imgurl stringByReplacingOccurrencesOfString:@"w.h" withString:@"104.63"];
        [self.calloutView.imageView sd_setImageWithURL:[NSURL URLWithString:imgUrl] placeholderImage:[UIImage imageNamed:@"bg_customReview_image_default"]];
        self.calloutView.title = self.annotation.title;
        self.calloutView.subtitle = self.annotation.subtitle;
        [self addSubview:self.calloutView];
    }else{
        [self.calloutView removeFromSuperview];
    }
    [super setSelected:selected animated:animated];
    
}

在自定義氣泡的view里面加你想加的控件望蜡,數(shù)據(jù)等等唤崭。
然后在自定義的annotation模型里面依次添加這些屬性。
具體看我源碼里面已經(jīng)很清楚里脖律,如果還是有問題的可以提出來我們一起coding.

我的.gif

這兩個界面也是webview

高仿美團(tuán)四就到這里了谢肾,本項目繼續(xù)更新中。小泉。芦疏。

源碼鏈接:https://github.com/tubie/JFMeiTuan

屏幕快照 2015-10-08 08.55.27.png

有問題可以提出來我很樂意和大家一起分享。喜歡的話給我一個小星星我會很開心的微姊。同時也希望你能夠繼續(xù)關(guān)注我酸茴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市兢交,隨后出現(xiàn)的幾起案子薪捍,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酪穿,死亡現(xiàn)場離奇詭異凳干,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)被济,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門救赐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人只磷,你說我怎么就攤上這事经磅。” “怎么了钮追?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵预厌,是天一觀的道長。 經(jīng)常有香客問我畏陕,道長配乓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任惠毁,我火速辦了婚禮犹芹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞠绰。我一直安慰自己腰埂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布蜈膨。 她就那樣靜靜地躺著屿笼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翁巍。 梳的紋絲不亂的頭發(fā)上驴一,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音灶壶,去河邊找鬼肝断。 笑死,一個胖子當(dāng)著我的面吹牛驰凛,可吹牛的內(nèi)容都是我干的胸懈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼恰响,長吁一口氣:“原來是場噩夢啊……” “哼趣钱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胚宦,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤首有,失蹤者是張志新(化名)和其女友劉穎燕垃,沒想到半個月后悄谐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仅孩,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年例获,在試婚紗的時候發(fā)現(xiàn)自己被綠了低矮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡被冒,死狀恐怖军掂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昨悼,我是刑警寧澤蝗锥,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站率触,受9級特大地震影響终议,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜葱蝗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一穴张、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧两曼,春花似錦皂甘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至户辫,卻和暖如春渐夸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渔欢。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工墓塌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膘茎。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓桃纯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親披坏。 傳聞我的和親對象是個殘疾皇子态坦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容