Chris Chris - 6 months ago 55
iOS Question

How to truncate UITextView contents to fit a reduced size?

I'm having real trouble getting my head around this issue.

As the title suggests, I have several UITextViews on a view in an iPhone application. I am programmatically creating them and successfully filling that textview with text, but in some cases the text I put in the view takes up more space than the frame I allocate for it. In this case I would like the text to be truncated, but I can't figure out how to do it.

I have predefined the following constants;

#define viewOriginX 20
#define viewOriginY 180

Here is my UITextView creation code;

textViewOne = [[UITextView alloc] initWithFrame:CGRectMake(viewOriginX, viewOriginY + 65, 280, 45];
textViewOne.delegate = self;
textViewOne.scrollEnabled = NO;
textViewOne.contentInset = UIEdgeInsetsZero;
textViewOne.font = viewFont;
textViewOne.textColor = [UIColor blackColor];
textViewOne.textAlignment = UITextAlignmentLeft;
[self.view addSubview:textViewOne];

In some cases I have 15 to 20 lines of text in here and I would like to truncate it to 2 lines.

Can anyone help me in the right direction?

Thanks in advance! :D


You can do a character count. For example, if you have UITextField like this:

|This is a string in |
|a text view.        |

you have something like 20 characters per line. If you know that number you can simply truncate your string by -substringToIndex: method.

int maxCharacters = 40; // change it to your max
if([myString length] > maxCharacters) {
    myString = [myString substringToIndex:maxCharacters];

You can also think about UILabel. Since you need only 2 lines of text, UILabel's numberOfLines property can solve your problem.