質問編集履歴

4

文章の訂正

2018/12/17 14:18

投稿

mimamo
mimamo

スコア44

test CHANGED
File without changes
test CHANGED
@@ -276,7 +276,7 @@
276
276
 
277
277
  <<エラー発生>>
278
278
 
279
- pinchやRotationを受け取っていないらしく、実行しても画像は変化なくprintもされませんでした。
279
+ 実行自体はできるのですが、pinchやRotationを受け取っていないらしく画像は変化せずprintもされませんでした。
280
280
 
281
281
 
282
282
 

3

コーディングの編集

2018/12/17 14:18

投稿

mimamo
mimamo

スコア44

test CHANGED
File without changes
test CHANGED
@@ -264,6 +264,208 @@
264
264
 
265
265
 
266
266
 
267
+ ##更新情報
268
+
269
+
270
+
271
+
272
+
273
+ 回答者さまから頂いた[資料](https://hajihaji-lemon.com/smartphone/swift/rotation-gesture-recognizer/)を参考に拡大縮小・回転できるようにコーディングし、重要そうな部分を抜粋したものが下記になります。
274
+
275
+
276
+
277
+ <<エラー発生>>
278
+
279
+ pinchやRotationを受け取っていないらしく、実行しても画像は変化なくprintもされませんでした。
280
+
281
+
282
+
283
+ ```Swift
284
+
285
+ import UIKit
286
+
287
+
288
+
289
+
290
+
291
+ class ViewController2: UIViewController, UIGestureRecognizerDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
292
+
293
+
294
+
295
+ @IBOutlet var rotationRecognizer: UIRotationGestureRecognizer!
296
+
297
+
298
+
299
+ @IBOutlet var pinchRecognizer: UIPinchGestureRecognizer!
300
+
301
+
302
+
303
+ @IBOutlet weak var getphoto: UIImageView!
304
+
305
+
306
+
307
+ override func viewDidLoad() {
308
+
309
+ super.viewDidLoad()
310
+
311
+ //デリゲート先に自分を設定する。
312
+
313
+ rotationRecognizer.delegate = self
314
+
315
+ pinchRecognizer.delegate = self
316
+
317
+
318
+
319
+ //アフィン変換の初期値を設定する。
320
+
321
+ prevEndPinch = getphoto.transform
322
+
323
+ prevEndRotate = getphoto.transform
324
+
325
+ prevPinch = getphoto.transform
326
+
327
+ prevRotate = getphoto.transform
328
+
329
+
330
+
331
+ // タッチ操作を enable
332
+
333
+ getphoto.isUserInteractionEnabled = true
334
+
335
+ self.view?.addSubview(getphoto)
336
+
337
+
338
+
339
+ getimage.image = UIImage(named:"binsen1.jpg")!
340
+
341
+ }
342
+
343
+
344
+
345
+ //ドラッグ終了時のアフィン変換
346
+
347
+ var prevEndPinch:CGAffineTransform = CGAffineTransform()
348
+
349
+ var prevEndRotate:CGAffineTransform = CGAffineTransform()
350
+
351
+
352
+
353
+ //ドラッグ中の前回アフィン変換
354
+
355
+ var prevPinch:CGAffineTransform = CGAffineTransform()
356
+
357
+ var prevRotate:CGAffineTransform = CGAffineTransform()
358
+
359
+
360
+
361
+
362
+
363
+ @IBAction func pinchPhoto(_ sender: UIPinchGestureRecognizer) {
364
+
365
+ print("pinch!")
366
+
367
+ //前回ドラッグ終了時の拡大縮小を引き継いだアフィン変換を行う。
368
+
369
+ let nowPinch =
370
+
371
+ prevEndPinch.scaledBy(x: sender.scale, y: sender.scale)
372
+
373
+
374
+
375
+ //拡大縮小と回転のアフィン変換を合わせたものをラベルに登録する。
376
+
377
+ getphoto.transform = prevRotate.concatenating(nowPinch)
378
+
379
+
380
+
381
+ //今回の拡大縮小のアフィン変換をクラス変数に保存する。
382
+
383
+ prevPinch = nowPinch
384
+
385
+
386
+
387
+ if(sender.state == UIGestureRecognizerState.ended) {
388
+
389
+ //ドラッグ終了時の拡大終了のアフィン変換をクラス変数に保存する。
390
+
391
+ prevEndPinch = nowPinch
392
+
393
+ }
394
+
395
+
396
+
397
+ }
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+ @IBAction func rotatePhoto(_ sender: UIRotationGestureRecognizer) {
406
+
407
+ print("rotate!")
408
+
409
+ //前回ドラッグ終了時の回転を引き継いだアフィン変換を行う。
410
+
411
+ let nowRotate = prevEndRotate.rotated(by: sender.rotation)
412
+
413
+
414
+
415
+ //拡大縮小と回転のアフィン変換を合わせたものをラベルに登録する。
416
+
417
+ getphoto.transform = prevPinch.concatenating(nowRotate)
418
+
419
+
420
+
421
+ //今回の回転のアフィン変換をクラス変数に保存する。
422
+
423
+ prevRotate = nowRotate
424
+
425
+
426
+
427
+ if(sender.state == UIGestureRecognizerState.ended) {
428
+
429
+ //ドラッグ終了時の回転のアフィン変換をクラス変数に保存する。
430
+
431
+ prevEndRotate = nowRotate
432
+
433
+ }
434
+
435
+ }
436
+
437
+
438
+
439
+ //リコグナイザーの同時検知を許可するメソッド
440
+
441
+ func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
442
+
443
+ return true
444
+
445
+ }
446
+
447
+
448
+
449
+
450
+
451
+ override func didReceiveMemoryWarning() {
452
+
453
+ super.didReceiveMemoryWarning()
454
+
455
+ // Dispose of any resources that can be recreated.
456
+
457
+ }
458
+
459
+
460
+
461
+ }
462
+
463
+
464
+
465
+
466
+
467
+ ```
468
+
267
469
 
268
470
 
269
471
  ### 補足情報(FW/ツールのバージョンなど)

2

参考資料の添付

2018/12/17 13:59

投稿

mimamo
mimamo

スコア44

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,9 @@
8
8
 
9
9
 
10
10
 
11
-
11
+ [参考資料1](https://picolica.com/2017/04/23/swift3-move-view/)
12
+
13
+ [参考資料2](https://picolica.com/2017/04/27/swift3-zoom-in-out/)
12
14
 
13
15
  ### 該当のソースコード
14
16
 

1

タイトルの変更

2018/12/16 03:15

投稿

mimamo
mimamo

スコア44

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