UIImageのsizeを取得する方法注意点

More than 3 years have passed since last update.


目的:

SwiftでUIImageのsizeを取得する際の注意点をまとめる。

objective-cのサンプルを真似してSwiftに書き直すとはまる部分があるので簡単にまとめておきます。


内容:

拡大縮小や加工等をする場合にUIImageのサイズを取得しますが、そのときXcodeの補完機能を信じてコードを作成するといろいろとはまったので、そのはまった箇所をメモしておきます。


設定:

Image画像は別途準備します。その画像をUIImage(named:xxx)で読み込んでpropertyを作成しておきます。


test.swift

let mainImage = UIImage(named: "Image1")


UIImageのサイズを取得するにはXcodeの補完機能を使い以下のような方法で取得できます


test.swift

let width = self.mainImage?.size.width

let height = self.mainImage?.size.height

ここまでは問題ないです。

表示するために別途準備していたImageViewにmainViewを入れます。このような感じです。


test.swift

self.imageView.image = mainImage



はまるポイント:

私がしたかったのはimageViewをピンチアウトで拡大縮小したかったのでimageViewにScrollViewを付加しています。別途最大スケール等はしておきます。ピンチアウト時にimageViewのサイズを再計算する際にはまりました。

imageViewサイズを取得するのにXcodeの補完、及び先に示したUIImageの流れで


test.swift

var imageSize = self.imageView.image?.size

imageSize.width *= self.scrollView.zoomScale

としてしまいそうですが、これでは動きません・・・。

なぜなら計算をして自分自身の値を利用しそのが自分自身に値をいれるので暗黙的にunwrappeしてあげないといけません。正しくは以下となります。


test.swift

var imageSize = self.imageView.image!.size

imageSize.width *= self.scrollView.zoomScale

補完機能は便利ですが頼っていると痛い目に遭います・・・。

Objective-Cなら何も考えずできたので自由度が高かったですす。