I want to build typography poster using UILabel
- left and margin: 25
- 320(device width) – 50(sum of the margins) = 270(label width frame)
The font size of each label should change in order to fit in 270 frame width
I try with sizeToFit(),adjustsFontSizeToFitWidth=true
var margin = 0;
let label = UILabel(frame: CGRectMake(25 , 72, 270, 70));
label.backgroundColor = UIColor.clearColor();
label.textAlignment = NSTextAlignment.Left;
label.textColor = UIColor.blackColor();
label.numberOfLines = 1;
label.font = UIFont.systemFontOfSize(50.0);
label.text = "Some Text";
label.adjustsFontSizeToFitWidth = true;
self.view.addSubview(label);
margin += 60;
let label2 = UILabel(frame: CGRectMake(25 , CGFloat(72+margin), 270, 70));
label2.backgroundColor = UIColor.clearColor();
label2.textAlignment = NSTextAlignment.Left;
label2.textColor = UIColor.whiteColor();
label2.numberOfLines = 1;
label2.font = UIFont.boldSystemFontOfSize(45.0);
label2.text = "Some Text Longer";
self.view.addSubview(label2);
Screenshot when lable1 and label2 adjustsFontSizeToFitWidth=true
The text should start from the end of first grey border and end in the beginning at the start of the second grey border
Best Solution
adjustsFontSizeToFitWidth
does not increase the size of the font in the label to fit the width.According to Apple's documentation,
You can try increasing the size of the font to fit the width of the frame.
Source : https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/sizeToFit
You can also use the following method to iteratively find the maximum size that fits the label.
How to adjust font size of label to fit the rectangle?