[swift4] AutoLayoutで配置しているImageViewのサイズを画像サイズに合わせて、後で変更する

環境:xcode9 , swift4

基本的にAutoLayoutで配置しているObjectのレイアウトやサイズは変更できない。

ただ、AutoLayoutは視覚的に物体を配置できるので、とても便利。

そこで、AutoLayoutで配置したImageViewのサイズをあとで読み込んだ画像サイズに合わせて変更するコードはこちら

@IBOutlet var ImageView: UIImageView!

let image:UIImage = UIImage(data: imageData)!
ImageView.image = image
let scale = self.view.bounds.width/image.size.width
ImageView.translatesAutoresizingMaskIntoConstraints = true
ImageView.frame = CGRect(
 x: ImageView.frame.minX,
 y: ImageView.frame.minY,
 width: self.view.bounds.width,
 height: scale*image.size.height)

ImageView.translatesAutoresizingMaskIntoConstraints = true
でAutoLayoutを無効化して、CGRectで再度ImageViewのサイズと位置を変更している。

上のコードでは読み込んだ画像を横幅は画面いっぱいに、縦横比を固定したまま高さを指定している。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です