I am making an app where I have 3 labels. I am using label auto-shrinking to help adapt the label's font size to the device.
These labels are right next to each other, and that therefore means that I want them to have them the same font size. What currently happens is (because they have different amounts of text) they end up shrinking to different font sizes.
Is there a way to make it so that after scaling, the label with the smallest font size is the standard font for all of the other labels.
Thanks.
Programatically change UIlabel font size after dynamic resizing. See the example below. Calculate current font size with length of string & font. And then get minimum font size and apply separately for each UILabel
override func viewWillAppear(_ animated: Bool) {
let fontSize1 = self.label1.getFontSizeForLabel()
let fontSize2 = self.label2.getFontSizeForLabel()
let fontSize3 = self.label3.getFontSizeForLabel()
let smallestFontSize = min(min(fontSize1, fontSize2), fontSize3)
self.label1.font = self.label1.font.withSize(smallestFontSize)
self.label2.font = self.label2.font.withSize(smallestFontSize)
self.label3.font = self.label3.font.withSize(smallestFontSize)
self.label1.adjustsFontSizeToFitWidth = false
self.label2.adjustsFontSizeToFitWidth = false
self.label3.adjustsFontSizeToFitWidth = false
}
UILabel Extension
extension UILabel {
func getFontSizeForLabel() -> CGFloat {
let text: NSMutableAttributedString = NSMutableAttributedString(attributedString: self.attributedText!)
text.setAttributes([NSAttributedStringKey.font: self.font], range: NSMakeRange(0, text.length))
let context: NSStringDrawingContext = NSStringDrawingContext()
context.minimumScaleFactor = self.minimumScaleFactor
text.boundingRect(with: self.frame.size, options: NSStringDrawingOptions.usesLineFragmentOrigin, context: context)
let adjustedFontSize: CGFloat = self.font.pointSize * context.actualScaleFactor
return adjustedFontSize
}
}
Storyboard
Output
This is a duplicate of the question, there I answered how to solve this problem: https://stackoverflow.com/a/58376331/9024807
来源:https://stackoverflow.com/questions/49519471/setting-the-same-font-size-for-different-labels-after-scaling