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];
希望這不是爲時已晚,以幫助。
試着用'[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