Calculate NSString size to adjust UITextField frame

Posted by Bernd Plontsch on Stack Overflow See other posts from Stack Overflow or by Bernd Plontsch
Published on 2013-10-19T09:28:55Z Indexed on 2013/10/19 9:54 UTC
Read the original article Hit count: 364

Filed under:
|
|
|

I have issues calculating the accurate size of a NSString displayed in a UITextField.

My goal is to update the textfield frame size according to the string size programmatically (without using sizeToFit). I am using the sizeWithFont function.

-(void)resizeTextFieldAccordingToText:(NSString*)textFieldString {

    CGPoint originalCenter = self.textField.center;

    UIFont* currentFont = [textField font];
    CGSize newSize = [textFieldString sizeWithFont:currentFont];

    //Same incorrect results with the extended version of sizeWithFont, e.g.
    //[textFieldString sizeWithFont:currentFont constrainedToSize:CGSizeMake(300.0, 100.0) lineBreakMode:NSLineBreakByClipping];

    [self.textField setFrame:(CGRectMake(self.textField.frame.origin.x, self.textField.frame.origin.y, newSize.width, newSize.height))];
    [self.textField setCenter:originalCenter];

} 

Problem: While this return correct size results at first its becomes more and more unprecise by adding characters therefore finally starts clipping the string (as seen in the right screenshot).

enter image description here

How do I get the accurate size of the textField string for correctly adjusting its size?

© Stack Overflow or respective owner

Related posts about ios

Related posts about objective-c