Ich habe eine Weile gebraucht, um den Code sowie den Code auf der eingeführten Seite zu lesen, und habe festgestellt, dass sie alle versuchen, die Rahmengröße der Beschriftung zu ändern, so dass die standardmäßige vertikale Ausrichtung in der Mitte nicht angezeigt würde.
In einigen Fällen möchten wir jedoch, dass die Beschriftung alle diese Bereiche einnimmt, auch wenn die Beschriftung so viel Text enthält (z. B. mehrere Zeilen mit gleicher Höhe).
Hier habe ich einen alternativen Weg verwendet, um es zu lösen, indem ich einfach Zeilenumbrüche am Ende des Labels einfüge (bitte beachten Sie, dass ich tatsächlich die UILabel
aber das ist nicht notwendig):
CGSize fontSize = [self.text sizeWithFont:self.font];
finalHeight = fontSize.height * self.numberOfLines;
finalWidth = size.width; //expected width of label
CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
int newLinesToPad = (finalHeight - theStringSize.height) / fontSize.height;
for(int i = 0; i < newLinesToPad; i++)
{
self.text = [self.text stringByAppendingString:@"\n "];
}
0 Stimmen
Siehe stackoverflow.com/a/41367948/1108052