Question

I use the following code to add text in IOS

//Set up label frame
UILabel *tempLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 10, 210, 80)];
self.answer_text_label = tempLabel;
[tempLabel release];    
[self.preview_answer_container addSubview:self.answer_text_label];

//Populate label with text
self.answer_text_label.text = self.answer.text;
self.answer_text_label.numberOfLines = 4;
self.answer_text_label.lineBreakMode = UILineBreakModeWordWrap;
[self.answer_text_label sizeToFit];

However, the result I get is as such, the text seems to overflow to the right instead of staying within the frame as stipulated in my label setup 'CGRectMake(100, 10, 210, 80)'

enter image description here

The wrapping works if I change to self.answer_text_label.numberOfLines = 0. But this will not work for me since I need to constrain the text within my stipulated label frame.

Any way I can wrap the text and keep to only 4 lines?

EDIT:

Try the suggested code

self.answer_text_label.text = self.answer.text;
[self.answer_text_label sizeToFit];
CGRect labelRect = self.answer_text_label.frame;
labelRect.origin.y = CGRectGetMaxY(labelRect);
labelRect.size = self.answer_text_label.frame.size;
self.answer_text_label.frame = labelRect;

result as follows. Did not seem to solve my problem

enter image description here

Was it helpful?

Solution

Try setting frame explicitly -

[self.answer_text_label sizeToFit];
CGRect labelRect = self.answer_text_label.frame;
labelRect.origin.y = CGRectGetMaxY(labelRect);
labelRect.size = self.answer_text_label.frame.size;
self.answer_text_label.frame = labelRect;

EDIT - Don't need to use this, just use following - remove these of code just use below, no other property of frame, remove sizeToFit as well -

self.answer_text_label.numberOfLines = 4;
self.answer_text_label.lineBreakMode = UILineBreakModeWordWrap;

For vertical alignment - (With above line of code, use this as well, and do don't use size to fit)

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

OTHER TIPS

In iOS 6 and later, use NSLineBreakByWordWrapping, not UILineBreakModeWordWrap.

self.answer_text_label.lineBreakMode = NSLineBreakByWordWrapping;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top