UILabelのフォントサイズを2倍にするとき、必要なboundsも2倍になるのか
ただのメモです。
結論から言うとぴったし2倍にはならないがだいたい二倍になる。
let label = UILabel() label.textColor = .white label.backgroundColor = .red label.text = "test test test" label.center = view.center label.font = .boldSystemFont(ofSize: 20) view.addSubview(label) print(label.bounds) //(0.0, 0.0, 0.0, 0.0) label.sizeToFit() print(label.bounds) //(0.0, 0.0, 115.0, 24.0) //フォントサイズを二倍にする。 label.font = .boldSystemFont(ofSize: 40) label.sizeToFit() print(label.bounds) //(0.0, 0.0, 225.333333333333, 48.0)
let requiredSize: ((CGFloat) -> CGRect) = { (size) in let text = "test test test" let font: UIFont = .boldSystemFont(ofSize: size) let attributedText = NSAttributedString(string: text, attributes: [.font: font]) let greatest = CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude) return attributedText.boundingRect(with: greatest, options: .usesLineFragmentOrigin, context: nil) } print(requiredSize(20)) //(0.0, 0.0, 114.990234375, 23.8671875) print(requiredSize(40)) //(0.0, 0.0, 225.05859375, 47.734375)