I am trying to find a non-deprecated method to size the font of a textview down so that all text fits in the textview without requiring scrolling.
The method 'sizeWithFont' is deprecated and I want to ensure best practices, and XCode says to use 'boundingRectWithSize' but not sure how to use this to size a font down so that all text fits.
Any suggestions? And NO I can not use a UILabel instead. I need to have the text vertically aligned at the top and UILabel does not do this.
This worked Pre-iOS 7:
CGFloat fontSize;
CGFloat minSize;
if([deviceType isEqualToString:@"iPad"] || [deviceType isEqualToString:@"iPad Simulator"]){
fontSize = 40;
minSize = 15;
}
else{
fontSize = 18;
minSize = 8;
}
while (fontSize > minSize)
{
CGSize size = [quote sizeWithFont:[UIFont fontWithName:@"Interstate" size:fontSize] constrainedToSize:CGSizeMake(newView.frame.size.width, 10000)];
if (size.height <= newView.frame.size.height) break;
fontSize -= 1.0;
}
UITextView is subclass of UIScrollView -> so you can check the contentSize of the scrollable area after you set your text or font into textView.
That should work... Probably it would work even without [textView layoutIfNeeded].
I had to do the same but then with programmatically added AutoLayout constraints (
NSLayoutConstraint
). Because of the constraints thecontentSize
wasn't correct for the most time causing theUITextView
to scroll :/ To still get the correct font size I ended up just creating a newUITextView
for the sake of doing some good ol' trial and error testing and getting it through there.Pretty simple but like with everything you just gotta come up with it :)
Try UITextView's
sizeThatFits
. You can probably use it the following way:Solution 1
Your problem can be solved by simply replacing
sizeWithFont: constrainedToSize:
with :Solution 2
The
sizeThatFits
method can be used to address this problem like this:I hope one of these solutions solve your problem. Cheers!