LoginSignup
11
12

More than 5 years have passed since last update.

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

Posted at

目的:

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なら何も考えずできたので自由度が高かったですす。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12