2014-02-11 80 views
0
CGFloat constrainedSize = 500.0f; 

UIFont * myFont = [UIFont fontWithName:@"Arial" size:19]; //or any other font that matches what you will use in the UILabel 
CGSize textSize = [myText sizeWithFont: myFont 
        constrainedToSize:CGSizeMake(constrainedSize, CGFLOAT_MAX) 
         lineBreakMode:NSLineBreakByWordWrapping]; 

lblDescription=[[UILabel alloc]initWithFrame:CGRectMake(10,y, 300,textSize.height)]; 

我試過這段代碼來管理動態文本。但是如果數據變大,它將不會顯示整個文本。管理標籤文字動態無法正常工作

+0

你看着'UITextView'? – NeverHopeless

+0

爲什麼你硬編碼300?爲什麼不放置動態寬度呢?只是正確的textSize.width而不是300,看看會輸出什麼。 – Tirth

回答

1

您將大小限制爲width = 500pt,但您的文本字段只有300pt寬。

編輯:

看來,我不清楚。如果使用sizeWithFont計算標籤的高度,並給出約束寬度爲500pt(constrainedSize)並使用計算的高度,然後在寬度僅爲300pt的標籤上,則計算的高度不正確。

這是它的工作對我來說:

CGFloat constrainedSize = 300.0f; 

UIFont * myFont = [UIFont fontWithName:@"Arial" size:19]; //or any other font that matches what you will use in the UILabel 
CGSize textSize = [myText sizeWithFont: myFont 
        constrainedToSize:CGSizeMake(constrainedSize, CGFLOAT_MAX) 
         lineBreakMode:NSLineBreakByWordWrapping]; 

UILabel* lblDescription=[[UILabel alloc]initWithFrame:CGRectMake(10.0, 10.0, constrainedSize, textSize.height)]; 
lblDescription.lineBreakMode = NSLineBreakByWordWrapping; 
lblDescription.numberOfLines = 0; 
lblDescription.font = myFont; 
lblDescription.text = myText; 

還是那句話:使用相同屬性的標籤(字體,大小,lineBreakMode)爲您使用的計算,否則將不適合。

+1

這不是一個答案 – Jitendra

0

這是因爲您正在分配並啓動UILabel,並且永遠不會重置其更大尺寸文本的框架。

只需在文本大小更改後設置UILabel的框架。

此行將標籤的大小設置爲textSize.height並且不會更改。

 lblDescription=[[UILabel alloc]initWithFrame:CGRectMake(10,y, 300,textSize.height)]; 

您可以調用setFrame以編程方式更改此設置。

+0

這不適合我 – Jitendra

+0

請發佈您的setframe代碼。 – Woodstock

0

要顯示更大的文字/多行文字,您應該改用UITextView。它旨在解決這個問題。這裏

0

是喜是代碼來設置標籤

CGSize maximumLabelSize = CGSizeMake(300,9999); 
    CGSize expectedLabelSize = [label.text sizeWithFont:label.font 
             constrainedToSize:maximumLabelSize 
              lineBreakMode:label.lineBreakMode]; 

    CGRect newFrame = label.frame; 
    newFrame.size.height = expectedLabelSize.height; 
    label.frame = newFrame; 

動態文字我希望這是幫助你..