MBProgressHUD实现换行显示文字同时带自定义图片

题记:实现MBProgress在非纯文本模式下(HUD.mode = MBProgressHUDModeText<--不是这个模式下)的文字换行。因为项目需求,然后网上找了找,没找到方案, 决定自己搞一搞。

问题:MBProgres带的label(或者detailLabel)设置numberOfLine = 0,没软用的,不会根据上方自定义image或者菊花的宽度来换行,下面上图看一看问题

Condition1:在HUD.squre = No的情况下,HUD变成一个长方形,不行!

MBProgressHUD实现换行显示文字同时带自定义图片_第1张图片

Condition2:在HUD.squre = YES的情况下,HUD变成一个正方形,这个是我想要的,但是一看,太大太空了,不行!

MBProgressHUD实现换行显示文字同时带自定义图片_第2张图片

思路:在label的字增多的情况下,当边距到达一定值发现终于开始换行了,下面是图,那问题找到了,就是与addToView 的view有关系,根据View来设定HUD 的大小,下面给出简单的实现方案。

MBProgressHUD实现换行显示文字同时带自定义图片_第3张图片

解决方案一:在HUD下自定义一个父视图,把HUD加到自己定义的View上,就减少了边距,自然能在小个正方形下换行了,最大的Size取决于你定义View的Size,下面是效果图合代码

MBProgressHUD实现换行显示文字同时带自定义图片_第4张图片

下面上代码:

// HUDBgView

UIView *bgView = [[UIView alloc]initWithFrame:CGRectMake(195 / 2, 200, 170,170)];

bgView.backgroundColor = [UIColor clearColor];

[self.view addSubview:bgView];

bgView.userInteractionEnabled = NO;

// initHUD

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:bgView animated:YES];

hud.userInteractionEnabled = NO;

hud.backgroundColor = [UIColor clearColor];

hud.animationType = MBProgressHUDAnimationZoomOut;

hud.detailsLabel.text = @"赶紧换行吧,赶紧换行吧,赶紧换行吧,赶紧换行吧,赶紧换行吧,";

hud.square = YES;

hud.mode = MBProgressHUDModeCustomView;

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hud_success"]];

hud.customView = imageView;

[hud hideAnimated:YES afterDelay:3.0];

解决方案二:自定义CustomView,里面带Label和Image

// 这个暂时还没去弄,有空了加上

你可能感兴趣的:(MBProgressHUD实现换行显示文字同时带自定义图片)