MBProgressHUD在多行显示标签文本
嗨,我的iPad屏幕上有一个MBProgressHUD。完美的工作。但我想改变标签在三个lines.Like这个MBProgressHUD在多行显示标签文本
self.hud = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
self.hud.frame = CGRectMake(0, 0, 120, 143);
[self.navigationController.view addSubview:self.hud];
self.hud.delegate = self;
self.hud.mode = MBProgressHUDModeAnnularDeterminate;
NSString *strloadingText = [NSString stringWithFormat:@"Loading Data.\r Please Wait.\r 1-2 Minutes"];
NSLog(@"the loading text will be %@",strloadingText);
self.hud.labelText = strloadingText;
[self.hud show:YES];
显示所以我想在3线
加载数据的标签。
请稍候
1-2分钟
OR 我可以分配到HUD的形象呢?
所有这些都应该在labeltext中。但我只有一条线。我怎样才能做到这一点? 如果您需要更多信息,请询问。谢谢。
MBProgressHUD的详细信息LabelText属性是多行但不是labelText属性。
所以,你可以尝试这样的事情
MBProgressHUD * hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.frame = CGRectMake(0, 0, 120, 143);
hud.mode = MBProgressHUDModeAnnularDeterminate;
NSString *strloadingText = [NSString stringWithFormat:@"Loading Data."];
NSString *strloadingText2 = [NSString stringWithFormat:@" Please Wait.\r 1-2 Minutes"];
NSLog(@"the loading text will be %@",strloadingText);
hud.labelText = strloadingText;
hud.detailsLabelText=strloadingText2;
您可以通过使用属性detailsLabelFont设置detailsLabelText字体。
这很有趣。出于好奇,我查看了源代码,试图找出为什么detailsLabelText是多行,但labelText不是,也没有看到任何区别。你知道一个多行参数是多少,另一个不是? – hkatz 2013-05-26 20:12:21
参数是numberOfLines。像这样设置它:label.numberOfLines = 0; – 2014-06-23 09:06:02
labelText与detailsText不同的原因,我想象是因为它与标题/描述视角的UIAlertView非常相似。
两个标签之间的差异是相当明显的,因为他们的目的,例如:
- 标题有更大的字体,相对于详细文字加粗经常倍。
- 标题意味着是短而明显,从一个流行的字典站点采取(描述不言自明):
名称:A描述性名称;一个加词。
我建议您不要使用多行标题,缩短标题并使用说明文字。
多行标题不工作的原因是因为layoutSubviews实现,大小没有被计算。如果你检查MBProgressHud.m,内layoutSubviews,
CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin;
CGSize maxSize = CGSizeMake(maxWidth, remainingHeight);
CGSize detailsLabelSize = [detailsLabel.text sizeWithFont:detailsLabel.font
constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];
totalSize.width = MAX(totalSize.width, detailsLabelSize.width);
totalSize.height += detailsLabelSize.height;
if (detailsLabelSize.height > 0.f && (indicatorF.size.height > 0.f || labelSize.height > 0.f)) {
totalSize.height += kPadding;
}
注意-[NSString sizeWithFont: constrainedToSize: lineBreakMode:]
呼吁的说明文字;此方法计算显示文本所需的大小 - 根据需要使用尽可能多的行,而-[NSString sizeWithFont:]
计算显示文本所需的大小,但仅计算显示一行。
我建议不要有多行标题,而应提供一个较短的标题,并附上一些说明文字。
如果您只需拥有多行标题(MBProgressHud中的所有更改。M):
- (void)setupLabels {
label = [[UILabel alloc] initWithFrame:self.bounds];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = MBLabelAlignmentCenter;
label.opaque = NO;
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
label.font = self.labelFont;
label.text = self.labelText;
>>> label.numberOfLines = 0;
[self addSubview:label];
...
替换:
CGSize labelSize = [label.text sizeWithFont:label.font];
labelSize.width = MIN(labelSize.width, maxWidth);
totalSize.width = MAX(totalSize.width, labelSize.width);
totalSize.height += labelSize.height;
if (labelSize.height > 0.f && indicatorF.size.height > 0.f) {
totalSize.height += kPadding;
}
CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin;
CGSize maxSize = CGSizeMake(maxWidth, remainingHeight);
CGSize detailsLabelSize = [detailsLabel.text sizeWithFont:detailsLabel.font
constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];
有了:
CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin;
CGSize maxSize = CGSizeMake(maxWidth, remainingHeight);
CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:maxSize lineBreakMode:label.lineBreakMode];
totalSize.width = MAX(totalSize.width, labelSize.width);
totalSize.height += labelSize.height;
if (labelSize.height > 0.f && indicatorF.size.height > 0.f) {
totalSize.height += kPadding;
}
remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin;
CGSize detailsLabelSize = [detailsLabel.text sizeWithFont:detailsLabel.font
constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];
希望这不是为时已晚,以帮助。
我也有过这样的问题!
您可以设置hud.label.numberOfLines = 0;
和它的作品!
self.hud.minSize = CGSizeMake(300,100);
试着用'[NSString stringWithFormat:@“加载数据。\ n请稍候。\ n 1-2分钟”]'。不确定它是否在MBProgressHUD中处理。 – iDev 2013-02-22 18:08:57
@ ACB.I尝试过。仍然在同一行。 – RookieAppler 2013-02-22 18:09:40
然后,您可能需要修改MBProgressHUD实施。检查是否有任何可用的选项。 – iDev 2013-02-22 18:11:06