Как в textView добавить картинку:slight_smile:
Как добавить картинку в TextView
class ViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
let imageView = UIImageView(image: UIImage(named: "img")!)
imageView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
textView.textContainer.exclusionPaths = [UIBezierPath(rect: imageView.frame)]
textView.addSubview(imageView)
}
}
хм, картинка отрисовывается поверх текста. Как тогда сделать так, чтобы текст перемещался на размер картинки?
Он и так перемещается, выставите:
imageView.clipsToBounds = true
Что бы картинка не вылезала за пределы imageView.
По каким-то причинам этого не происходит. При первом рендере экрана текст появляется снизу картинки, но через долю секунды запрыгивает под нее, так что картинка закрывает текст. clipsToBounds не помог.
Если вы пытаетесь воткнуть картинку с позицией (x: 0, y: 0) и шириной во весь экран, я вас поздравляю вы нашли баг
Попробуйте так:
textView.text = "\n" + textView.text
И если вы не редактируете текст в вашем TextView лучше используйте UILabel+UIScrollView: https://yadi.sk/d/N0mRKxQG3G949T
почему-то по второй схеме (где UILabel+UIScrollView) навбар вдруг стал прозрачным и контент стал скроллиться сквозь тайтл. Пришлось опустить scrollview ниже, (соответственно сместился весь контент на размер navBar-а, иначе констрейнты не сходятся) и добавить self.automaticallyAdjustsScrollViewInsets = false
Если добавлять через NSTextAttachment то какие-то проблемы с ресайзом. И не могу в коде найти свойство contentMode чтобы выставить AspectFit или AspectFill для вставляемой картинки.
К примеру мне надо, чтобы высота картинки составляла 0,6 от ширины, а ширина была равна ширине экрана:
imageAttachment.image = UIImage(named: “MyImage”)
let size = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.width*0.6)
imageAttachment.bounds = size
В итоге картинка появляется и ее frame какой надо, но контент картинки не вписывается в эти рамки, а просто уходит за пределы экрана. Не понятно как подогнать картинку под заданный размер.
создавай новую картинку нужного размера каждый раз, когда надо изменить размер + imageAttachment.bounds = size
Спасибо, получилось. Можно ли как-то выравнивание этой картинки сделать по центру textView? На разных диагоналях она по разному отображается. Пробовал задать ей ширину равную textView.frame.width и пропорциональное изменение высоты. Или textView.contentSize.width, и соответствующие .bounds но так не пашет. Картинка уходит за размеры textView
делаешь допустим bounds = (width: textview.width, height: width*0.6). теперь создаешь картинку под bounds. если картинка не влазиет в bounds то уменьшаешь ее пропорционально. потом эту маленькую картинку делаешь широкой\узкой, пустые места заполняешь прозрачностью
что то такое
----------------
| | | |
----------------