2011-03-03 24 views
5

Çok satırlı UILabel ile ilgili küçük bir sorunum var, UILabel metnim sıradan bir şekilde ortadan başlıyor ve yeni satırlar geldiğinde yukarı çıkıyor, böylece son satır ortada her zaman. Üst üste başlayıp, birbirinin altından geçen hatlar, normal bir metin görüntüsü gibi davranmasını istiyorum. Üzgünüm, açıklamam gerekirse, gerekirse ayrıntılı çalışmayı deneyebilirim! Şimdiden teşekkürler!Çok satırlı UILabel'ı ortadan başlayarak başlamıyor

cevap

11

Bir yazı tipi ve kısıtlı genişlik verilen bir metin bloğunun yüksekliğini bulmak için NSString'de sizeWithFont:constrainedToSize:lineBreakMode: yöntemini kullanabilirsiniz. Daha sonra, etiketinizin çerçevesini, metni kapsayacak kadar büyük olacak şekilde güncellersiniz. sizeWithFont yöntemi iOS 7.0 + içinde decprecated olduğundan

CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:label.lineBreakMode]; 
label.frame = CGRectMake(20.0f, 20.0f, textSize.width, textSize.height); 
+0

Sen teşekkürlerimi var! –

+1

Ayrıca, 'label.numberOfLines = 0' değerini ayarlamanız gerekebilir. –

0

, sen boundingRectWithSizeadında bir alternatif bir yöntem kullanabilirsiniz. Örnek için

:

NSDictionary *attrsDictionary =[NSDictionary dictionaryWithObject:YourFont forKey:NSFontAttributeName]; 
NSAttributedString *attrString =[[NSAttributedString alloc] initWithString:yourString attributes:attrsDictionary]; 

textRect = [attrString boundingRectWithSize:yourSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];