ho creato un campo di testo vista sottoclasse dentro il mio controller della vista, con la dimensione del carattere per , l'AdjustFontSizeToWidth abilitato e la dimensione del carattere minima per 10. Il mio campo di testo ha un testo segnaposto troppo grande per adattarsi alla vista. La dimensione del carattere di modifica alla larghezza è attivata e il sistema sta riducendo la dimensione del carattere a . Non so esattamente perché , perché il segnaposto non si adatta ancora (vedi screenshot) Qualche idea sul perché sta succedendo? Mi sono perso qualcosa? I sottoclasse UITextField e sovrascrivere i seguenti metodi (non sono sicuro che è rilevante, ma questo sembra essere metodi che possono causare questo bug):UITextField sottoclasse pasticciano adjustFontSizeToWidth
- (CGRect)leftViewRectForBounds:(CGRect)bounds {
CGRect leftViewRect = [super leftViewRectForBounds:bounds];
if ([self shouldShowLeftView] == YES) {
CGFloat newHeight = self.frame.size.height * 0.5f;
if (self.leftImage) {
leftViewRect.size.width = newHeight;
}
leftViewRect.origin.x = kMargins;
leftViewRect.origin.y = (self.frame.size.height - leftViewRect.size.height)/2.0f;
}
return leftViewRect;
}
- (CGRect)textRectForBounds:(CGRect)bounds {
CGRect rectForBounds = [super textRectForBounds:bounds];
if ([self shouldShowLeftView] == YES) {
rectForBounds.origin.x += kMargins;
rectForBounds.size.width -= 2.0 * kMargins;
} else {
rectForBounds.origin.x += kMargins/2.0;
rectForBounds.size.width -= 2.0 * (kMargins/2.0);
}
return rectForBounds;
}
- (CGRect)editingRectForBounds:(CGRect)bounds {
CGRect rectForBounds = [super editingRectForBounds:bounds];
if ([self shouldShowLeftView] == YES) {
rectForBounds.origin.x += kMargins;
rectForBounds.size.width -= 2.0 * kMargins;
} else {
rectForBounds.origin.x += kMargins/2.0;
rectForBounds.size.width -= 2.0 * (kMargins/2.0);
}
return rectForBounds;
}
EDIT: aggiornamento, ho cercato di usare this solution e adattato un po 'il codice per farlo funzionare anche per il segnaposto. Il ridimensionamento dei caratteri va bene, ma l'interfaccia utente è incasinata quando il testo è ridotto, il testo si sposta a sinistra, dietro la vista dell'immagine a sinistra. Nello screenshot, possiamo vedere che il margine destro è troppo grande e il testo troppo a sinistra.
C'è una dimensione minima del carattere del sistema. UITextField non ridurrà la dimensione del font fino a dove speri. – matt
La mia dimensione minima del font è 10, e il segnaposto ha un font con 14pt invece del 15 che ho dato di default, probabilmente è calcolato male. Ecco perché lo sto chiedendo. – Loadex