teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

文章の訂正

2018/12/17 14:18

投稿

mimamo
mimamo

スコア44

title CHANGED
File without changes
body CHANGED
@@ -137,7 +137,7 @@
137
137
  回答者さまから頂いた[資料](https://hajihaji-lemon.com/smartphone/swift/rotation-gesture-recognizer/)を参考に拡大縮小・回転できるようにコーディングし、重要そうな部分を抜粋したものが下記になります。
138
138
 
139
139
  <<エラー発生>>
140
- pinchやRotationを受け取っていないらしく、実行しても画像は変化なくprintもされませんでした。
140
+ 実行自体はできるのですが、pinchやRotationを受け取っていないらしく画像は変化せずprintもされませんでした。
141
141
 
142
142
  ```Swift
143
143
  import UIKit

3

コーディングの編集

2018/12/17 14:18

投稿

mimamo
mimamo

スコア44

title CHANGED
File without changes
body CHANGED
@@ -131,7 +131,108 @@
131
131
  ```
132
132
 
133
133
 
134
+ ##更新情報
134
135
 
136
+
137
+ 回答者さまから頂いた[資料](https://hajihaji-lemon.com/smartphone/swift/rotation-gesture-recognizer/)を参考に拡大縮小・回転できるようにコーディングし、重要そうな部分を抜粋したものが下記になります。
138
+
139
+ <<エラー発生>>
140
+ pinchやRotationを受け取っていないらしく、実行しても画像は変化なくprintもされませんでした。
141
+
142
+ ```Swift
143
+ import UIKit
144
+
145
+
146
+ class ViewController2: UIViewController, UIGestureRecognizerDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
147
+
148
+ @IBOutlet var rotationRecognizer: UIRotationGestureRecognizer!
149
+
150
+ @IBOutlet var pinchRecognizer: UIPinchGestureRecognizer!
151
+
152
+ @IBOutlet weak var getphoto: UIImageView!
153
+
154
+ override func viewDidLoad() {
155
+ super.viewDidLoad()
156
+ //デリゲート先に自分を設定する。
157
+ rotationRecognizer.delegate = self
158
+ pinchRecognizer.delegate = self
159
+
160
+ //アフィン変換の初期値を設定する。
161
+ prevEndPinch = getphoto.transform
162
+ prevEndRotate = getphoto.transform
163
+ prevPinch = getphoto.transform
164
+ prevRotate = getphoto.transform
165
+
166
+ // タッチ操作を enable
167
+ getphoto.isUserInteractionEnabled = true
168
+ self.view?.addSubview(getphoto)
169
+
170
+ getimage.image = UIImage(named:"binsen1.jpg")!
171
+ }
172
+
173
+ //ドラッグ終了時のアフィン変換
174
+ var prevEndPinch:CGAffineTransform = CGAffineTransform()
175
+ var prevEndRotate:CGAffineTransform = CGAffineTransform()
176
+
177
+ //ドラッグ中の前回アフィン変換
178
+ var prevPinch:CGAffineTransform = CGAffineTransform()
179
+ var prevRotate:CGAffineTransform = CGAffineTransform()
180
+
181
+
182
+ @IBAction func pinchPhoto(_ sender: UIPinchGestureRecognizer) {
183
+ print("pinch!")
184
+ //前回ドラッグ終了時の拡大縮小を引き継いだアフィン変換を行う。
185
+ let nowPinch =
186
+ prevEndPinch.scaledBy(x: sender.scale, y: sender.scale)
187
+
188
+ //拡大縮小と回転のアフィン変換を合わせたものをラベルに登録する。
189
+ getphoto.transform = prevRotate.concatenating(nowPinch)
190
+
191
+ //今回の拡大縮小のアフィン変換をクラス変数に保存する。
192
+ prevPinch = nowPinch
193
+
194
+ if(sender.state == UIGestureRecognizerState.ended) {
195
+ //ドラッグ終了時の拡大終了のアフィン変換をクラス変数に保存する。
196
+ prevEndPinch = nowPinch
197
+ }
198
+
199
+ }
200
+
201
+
202
+
203
+ @IBAction func rotatePhoto(_ sender: UIRotationGestureRecognizer) {
204
+ print("rotate!")
205
+ //前回ドラッグ終了時の回転を引き継いだアフィン変換を行う。
206
+ let nowRotate = prevEndRotate.rotated(by: sender.rotation)
207
+
208
+ //拡大縮小と回転のアフィン変換を合わせたものをラベルに登録する。
209
+ getphoto.transform = prevPinch.concatenating(nowRotate)
210
+
211
+ //今回の回転のアフィン変換をクラス変数に保存する。
212
+ prevRotate = nowRotate
213
+
214
+ if(sender.state == UIGestureRecognizerState.ended) {
215
+ //ドラッグ終了時の回転のアフィン変換をクラス変数に保存する。
216
+ prevEndRotate = nowRotate
217
+ }
218
+ }
219
+
220
+ //リコグナイザーの同時検知を許可するメソッド
221
+ func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
222
+ return true
223
+ }
224
+
225
+
226
+ override func didReceiveMemoryWarning() {
227
+ super.didReceiveMemoryWarning()
228
+ // Dispose of any resources that can be recreated.
229
+ }
230
+
231
+ }
232
+
233
+
234
+ ```
235
+
135
236
  ### 補足情報(FW/ツールのバージョンなど)
136
237
 
137
238
  Swiftのversionは4.1.2

2

参考資料の添付

2018/12/17 13:59

投稿

mimamo
mimamo

スコア44

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,8 @@
3
3
  今移動と拡大縮小はできているのですが、回転に関するコードがわからずどのようにすればいいのか困っています。
4
4
  アドバイスやサンプルコードのご教授、よろしくお願いします。
5
5
 
6
-
6
+ [参考資料1](https://picolica.com/2017/04/23/swift3-move-view/)
7
+ [参考資料2](https://picolica.com/2017/04/27/swift3-zoom-in-out/)
7
8
  ### 該当のソースコード
8
9
 
9
10
  ```Swift

1

タイトルの変更

2018/12/16 03:15

投稿

mimamo
mimamo

スコア44

title CHANGED
@@ -1,1 +1,1 @@
1
- Swift4 ある画像をコードだけで移動・拡大縮小・回転したいのですが、回転についてのコードがわかりません。
1
+ Swift4 ある画像を、タッチすることにより移動・拡大縮小・回転できるようにしたいのですが、回転についてのコードがわかりません。
body CHANGED
File without changes