Il motivo per cui labelText differisce dai dettagliTesto, immagino perché dovrebbe essere molto simile a UIAlertView dal punto di vista del titolo/descrizione.
Le differenze tra le due etichette è ben distinta a causa del loro scopo, per esempio:
- titoli sono i caratteri più grandi, Oft volte audaci rispetto ai dettagli del testo.
- Titoli sono destinati ad essere breve e ovvio, preso da un sito popolare dizionario (descrizione parla da sé):
Titolo: Un nome descrittivo; un epiteto.
Si consiglia di non disporre di un titolo su più righe, di mantenerlo breve e di utilizzare il testo descrittivo.
Il motivo per cui i titoli multilinea non funzionano è dovuto all'implementazione layoutSubviews, la dimensione non viene calcolata. se si ispezionare MBProgressHud.m, entro 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;
}
Annotare il -[NSString sizeWithFont: constrainedToSize: lineBreakMode:]
chiamata per il testo della descrizione; questo metodo calcola la dimensione richiesta per visualizzare il testo, utilizzando tutte le linee necessarie, mentre lo -[NSString sizeWithFont:]
calcola la dimensione richiesta per visualizzare il testo, ma solo fino a visualizzare una riga.
Vorrei sconsigliare di avere un titolo su più righe, e invece di fornire un titolo più breve, con qualche testo descrittivo per accompagnarlo.
Se si deve semplicemente avere il titolo su più righe (tutte le modifiche all'interno di 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];
...
Sostituire:
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];
Con:
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];
Spero che questo non è troppo tardi per aiutare.
Provare con '[NSString stringWithFormat: @" Caricamento dati. \ N Attendere. \ N 1-2 minuti "]'. Non sono sicuro che sia gestito in MBProgressHUD. – iDev
@ ACB.I ho provato. Sempre nella stessa linea. – RookieAppler
Quindi potrebbe essere necessario modificare l'implementazione di MBProgressHUD. Controlla se ci sono opzioni disponibili per questo. – iDev