MBProgressHUD自定義格式,以及添加自定義圖片

WechatIMG29.jpeg

假如你拿到這樣的設(shè)計圖,你第一反應(yīng)是什么呢?是不是覺得沒什么特別啊,就一個普普通通的view,實現(xiàn)起來也不會有什么難??!老實說,我也是這樣想的,可是我的組長一定要我用MBProgressHUD去實現(xiàn)哦。媽媽咪,這不是為難我嗎?本來我對MBProgressHUD的實現(xiàn)原因就不了解,還要我去改它的第三方庫,不過也是,正因為我不理解,讓我去改改就會了解。

1.彈框離界面的左右邊距192px的實現(xiàn)

這個我看了MBProgressHUD好久,一直不知道怎樣去改,因為- (void)updateConstraints方法中的NSLayoutConstraint *padding = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:subviews[idx - 1] attribute:NSLayoutAttributeBottom multiplier:1.f constant:0.f];這些,我真的看不懂,不過好彩嘗試通過給detailLabel添加約束。我這個主要是要限定最大的寬度的,所以采用以下判斷來布局。

CGFloat textWidth = [msg boundingRectWithSize:CGSizeMake(MAXFLOAT, 33) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:15]} context:nil].size.width;
    
if (textWidth > (SCREEN_WIDTH - 100 - 40)) {
    [hud.detailsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
         make.width.equalTo(@(SCREEN_WIDTH - 100 - 40));
    }];
}

實質(zhì)是黑色的彈框的大小是依據(jù)中間的detailsLabel的寬度來做約束的,所以你只要限制中間detailsLabel的寬度就可以了。

2.圖片大小的限定

首先,要實現(xiàn)圖片的顯示,MBProgressHUD的mode要設(shè)置為MBProgressHUDModeCustomView。要限定圖片大小,有以下兩種方法:
1.MBProgressHUD是根據(jù)你給定的圖片大小來約束大小,所以你要圖片顯示多大,你就叫UI給你這種尺寸的切圖就可以了。
2.自己通過代碼縮小圖片

#pragma mark - 等比例去壓縮圖片大小
- (UIImage *)scaleImage:(UIImage *)originImage toWidth:(CGFloat)width
{
     if (width > originImage.size.width) {
            return originImage;
    }

    CGFloat height = (width / originImage.size.width) * originImage.size.height;

    CGRect  rect = CGRectMake(0, 0, width, height);

    UIGraphicsBeginImageContext(rect.size);

    [originImage drawInRect:rect];

    UIImage * image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;

}

3.用MBProgressHUD做自定義動畫

hud.mode = MBProgressHUDModeCustomView;
UIImageView *gifImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"gif_loading_m_1"]];
NSMutableArray *arrOrigin = [[NSMutableArray alloc] initWithObjects:
                                   [UIImage imageNamed:@"gif_loading_m_1"],
                                   [UIImage imageNamed:@"gif_loading_m_2"],
                                   [UIImage imageNamed:@"gif_loading_m_3"],
                                   [UIImage imageNamed:@"gif_loading_m_4"],
                                   [UIImage imageNamed:@"gif_loading_m_5"],
                                   [UIImage imageNamed:@"gif_loading_m_6"],
                                   [UIImage imageNamed:@"gif_loading_m_7"],
                                   [UIImage imageNamed:@"gif_loading_m_8"],
                                   [UIImage imageNamed:@"gif_loading_m_3"],
                                   [UIImage imageNamed:@"gif_loading_m_1"],
                                   nil];

[gifImageView setAnimationImages:arrOrigin];
[gifImageView setAnimationDuration:1];
[gifImageView setAnimationRepeatCount:0];
[gifImageView startAnimating];

hud.customView = gifImageView;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容