Как изменить масштаб UIImageView в textview как Scale Aspect Fit swift? - PullRequest
0 голосов
/ 05 марта 2020

Эй, я создаю текстовое представление и могу добавлять изображения в это текстовое представление. Ширина этого изображения равна ширине текстового представления. Но я хочу дать максимальную высоту для этого ImageView, и я хочу показать изображение как масштабирование в режиме контента, но оно показывает растянутое (сжатый аспект), как я могу решить эту ситуацию? Код как ниже

  let image = UIImageView()
  image.contentMode = .scaleAspectFit
  let imageAttachment = NSTextAttachment()
  let newImageWidth = self.textView.bounds.width
  let newImageHeight = 200
  imageAttachment.bounds = CGRect(x: 0, y: 0, width: Int(newImageWidth), height: newImageHeight)
  imageAttachment.image = image.image

1 Ответ

1 голос
/ 10 марта 2020

Так вы бы рассчитали новую высоту для отношения aspectFit:

    // don't use "image" ... that's confusing
    let imageView = UIImageView()

    // assuming you set the image here
    imageView.image = UIImage(named: "myImage")

    guard let imgSize = imageView.image?.size else {
        // this will happen if you haven't set the image of the imageView
        fatalError("Could not get size of image!")
    }

    let imageAttachment = NSTextAttachment()
    let newWidth = self.textView.bounds.width

    // get the scale of the difference in width
    let scale = newWidth / imgSize.width

    // multiply image height by scale to get aspectFit height
    let newHeight = imgSize.height * scale

    imageAttachment.bounds = CGRect(x: 0, y: 0, width: newWidth, height: newHeight)
    imageAttachment.image = imageView.image
...