#目的:
SwiftでUIImageのsizeを取得する際の注意点をまとめる。
objective-cのサンプルを真似してSwiftに書き直すとはまる部分があるので簡単にまとめておきます。
#内容:
拡大縮小や加工等をする場合にUIImageのサイズを取得しますが、そのときXcodeの補完機能を信じてコードを作成するといろいろとはまったので、そのはまった箇所をメモしておきます。
#設定:
Image画像は別途準備します。その画像をUIImage(named:xxx)で読み込んでpropertyを作成しておきます。
let mainImage = UIImage(named: "Image1")
UIImageのサイズを取得するにはXcodeの補完機能を使い以下のような方法で取得できます
let width = self.mainImage?.size.width
let height = self.mainImage?.size.height
ここまでは問題ないです。
表示するために別途準備していたImageViewにmainViewを入れます。このような感じです。
self.imageView.image = mainImage
#はまるポイント:
私がしたかったのはimageViewをピンチアウトで拡大縮小したかったのでimageViewにScrollViewを付加しています。別途最大スケール等はしておきます。ピンチアウト時にimageViewのサイズを再計算する際にはまりました。
imageViewサイズを取得するのにXcodeの補完、及び先に示したUIImageの流れで
var imageSize = self.imageView.image?.size
imageSize.width *= self.scrollView.zoomScale
としてしまいそうですが、これでは動きません・・・。
なぜなら計算をして自分自身の値を利用しそのが自分自身に値をいれるので暗黙的にunwrappeしてあげないといけません。正しくは以下となります。
var imageSize = self.imageView.image!.size
imageSize.width *= self.scrollView.zoomScale
補完機能は便利ですが頼っていると痛い目に遭います・・・。
Objective-Cなら何も考えずできたので自由度が高かったですす。