[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のサイズと位置を変更している。
上のコードでは読み込んだ画像を横幅は画面いっぱいに、縦横比を固定したまま高さを指定している。