Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //: A UIKit based Playground for presenting user interface
- import UIKit
- import PlaygroundSupport
- class MyViewController : UIViewController {
- override func loadView() {
- let view = UIView()
- view.backgroundColor = .white
- self.view = view
- let string = """
- Мальчики и девочки🙋♂💥💁🏼♀
- Появилась одна 🙀🙀 вакансия iOS-Разработчика ВКонтакте🤴💰🇷🇺 собеседования уже в феврале 2⃣0⃣2⃣0⃣
- Записывайтесь, спешите😉
- Вопросы в ЛС💃💃💃 vk.com/nil
- """
- let paragraphStyle = NSMutableParagraphStyle()
- paragraphStyle.lineBreakMode = .byWordWrapping
- let attributtes = [
- NSAttributedString.Key.font : UIFont.systemFont(ofSize: UIFont.systemFontSize),
- NSAttributedString.Key.foregroundColor: UIColor.black,
- NSAttributedString.Key.paragraphStyle: paragraphStyle,
- ]
- let attributedString = NSAttributedString(string: string, attributes: attributtes)
- let maxSize = CGSize(width: 200, height: CGFloat.greatestFiniteMagnitude)
- let boundingRect = attributedString.boundingRect(with: maxSize, options: [.usesLineFragmentOrigin], context: nil)
- let boundingSize = boundingRect.size
- UIGraphicsBeginImageContextWithOptions(boundingSize, false, UIScreen.main.scale)
- attributedString.draw(in: boundingRect)
- let image = UIGraphicsGetImageFromCurrentImageContext()
- UIGraphicsEndImageContext()
- let xPadding: CGFloat = 10
- let imageView = UIImageView(frame: CGRect(x: xPadding, y: 100, width: boundingSize.width, height: boundingSize.height))
- imageView.image = image
- view.addSubview(imageView)
- let label = UILabel()
- label.numberOfLines = 0
- label.attributedText = attributedString
- let labelFittingSize = label.sizeThatFits(maxSize)
- label.frame = CGRect(x: xPadding, y: imageView.frame.maxY + 10, width: labelFittingSize.width, height: labelFittingSize.height)
- view.addSubview(label)
- let textView = UITextView()
- textView.attributedText = attributedString
- let textViewFittingSize = textView.sizeThatFits(maxSize)
- textView.frame = CGRect(x: xPadding, y: label.frame.maxY + 10, width: textViewFittingSize.width, height: textViewFittingSize.height)
- view.addSubview(textView)
- print("String bounding size:" + boundingSize.debugDescription + " UILabel fitting size:" + labelFittingSize.debugDescription + " UITextView fitting size:" + textViewFittingSize.debugDescription)
- }
- }
- // Present the view controller in the Live View window
- PlaygroundPage.current.liveView = MyViewController()
Advertisement
Add Comment
Please, Sign In to add comment