swift: ããã¹ãã®é«ããåå¾ããç°¡åãªæ¹æ³ï¼UITextView,UILabelï¼
ãªãã ããã ã§ãã使ãã表示ãããããã¹ãã®é«ããåå¾ããæ¹æ³ã
éçºç°å¢ï¼Xcode8 + swift3
UILabel
func labelHeight(label: UILabel) -> CGFloat{ label.sizeToFit() return label.frame.height }
UITextView
func textViewHeight(textView: UITextView) -> CGFloat { return textView.contentSize.height }
ãã ãä¸è¨ã®æ¹æ³ã ã¨UIããç´æ¥åå¾ãã¦ããã®ã§AutoLayoutã®ã¿ã¤ãã³ã°ã¨ããViewãèªã¿è¾¼ãå¦çã¹ãã¼ãã®ä½ä¸ã¨ãè²ã é½åãæªãæãããã ãã®å ´åã¯ãNSStringã¯ã©ã¹ã使ç¨ãã¦é«ããåå¾ãããï¼
func labelHeight(label: UILabel, s: String) -> CGFloat { let str: NSString = NSString(string: s) let size : CGSize = CGSize(width: label.frame.width, height: CGFloat.greatestFiniteMagnitude) let att: [String: Any] = [NSFontAttributeName: label.font] let rect: CGRect = str.boundingRect(with: size, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: att, context: nil) return rect.height }
é«ããåå¾ãã¦ããã®ã¯NSStringã¯ã©ã¹ã®str.boundingRect(with: CGSize, options: NSStringDrawingOptions, attributes: [String : Any]?, context: NSStringDrawingContext?)
ã¡ã½ããã
è¨å®ãã弿°ã¯ä¸è¨ã®éãã
弿° | 説æ |
---|---|
CGSize | 表示ããUIã®ãµã¤ãºãé«ããåå¾ãããå ´åã¯å¹
ã表示ãµã¤ãºã«ãé«ããCGFloat.greatestFiniteMagnitude ã«è¨å®ã å¹
ãåå¾ãããå ´åã¯ãã®éã |
NSStringDrawingOptions | ããã¹ãã®è¡¨ç¤ºæ¹æ³ã 2007-06-19 - at_yasuの日記もといメモ書きã«ããããããè¨è¼ãã¦ããã |
[String : Any]? | Attributesãè¨å®ãç¹ã«AttributedStringã¨ãã使ç¨ãã¦ããªãå ´åã¯ã[NSFontAttributeName: label.font] ã§è¯ãã§ãã |
UITextViewã®å ´åã¯UILabelãUITextViewã«æ¸ãæãã¦ä½¿ç¨ãã¦ãã ããã