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

質問編集履歴

1

質問の編集

2016/02/19 08:01

投稿

T_PoiPoi
T_PoiPoi

スコア16

title CHANGED
File without changes
body CHANGED
@@ -8,4 +8,154 @@
8
8
  指で拡大縮小もできるけど、ボタンでもすいすい拡大縮小回転なんでもできるような
9
9
  機能をぜひつけたいと思っているので、教えてください!
10
10
 
11
- よろしくお願いします!
11
+ よろしくお願いします!
12
+
13
+ ---
14
+ 2/19 16:43追記
15
+ >ikuwowさん 見てくださってありがとうございます!
16
+ 表示する画面のコード
17
+ ```ここに言語を入力
18
+ class ViewController: UIViewController {
19
+
20
+ @IBOutlet var backImageView: UIImageView!
21
+ var appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
22
+
23
+ override func viewDidLoad() {
24
+ super.viewDidLoad()
25
+ setImage()
26
+ }
27
+
28
+ override func didReceiveMemoryWarning() {
29
+ super.didReceiveMemoryWarning()
30
+ }
31
+
32
+ /****ここでカメラロールで選んだ写真を表示!****/
33
+ func setImage() {
34
+ backImageView.image = selectImage
35
+ }
36
+
37
+ override func viewWillAppear(animated: Bool) {
38
+ super.viewWillAppear(animated)
39
+ /****ここでスタンプを表示!****/
40
+ if appDelegate.isNewStampAdded == true {
41
+ let stamp = appDelegate.stampArray.last!
42
+ stamp.frame = CGRectMake(0, 0, 150, 150)
43
+ stamp.center = canvasView.center
44
+ stamp.userInteractionEnabled = true
45
+ canvasView.addSubview(stamp)
46
+ appDelegate.isNewStampAdded = false
47
+ }
48
+ }
49
+ /****スタンプを追加するためのボタン!****/
50
+ @IBAction func stampTapped() {
51
+ let alert = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
52
+
53
+ alert.addAction(UIAlertAction(title: "スタンプを追加", style: .Default) { action in
54
+
55
+ let ss = self.storyboard?.instantiateViewControllerWithIdentifier("StampSelectTab") as! SelectTabViewController
56
+ ss.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
57
+ self.presentViewController(ss, animated: true, completion: nil)
58
+
59
+ })
60
+
61
+ alert.addAction(UIAlertAction(title: "フレームを追加", style: .Default) { action in
62
+ //実装予定!いつかフレームも追加したい!
63
+ })
64
+
65
+ alert.addAction(
66
+ UIAlertAction(title: "キャンセル", style: UIAlertActionStyle.Cancel, handler: nil)
67
+ )
68
+
69
+ presentViewController(alert, animated: true, completion: nil)
70
+
71
+ }
72
+ }
73
+ ```
74
+ スタンプを動かしているコード
75
+ ```ここに言語を入力
76
+
77
+ class Stamp: UIImageView, UIGestureRecognizerDelegate {
78
+
79
+ var currentTransform: CGAffineTransform!
80
+ var scale: CGFloat = 1.0
81
+ var angle: CGFloat = 0
82
+ var isMoving: Bool = false
83
+
84
+ override func didMoveToSuperview() {
85
+ let rotationRecognizer: UIRotationGestureRecognizer = UIRotationGestureRecognizer(target: self, action: "rotationGesture:")
86
+ rotationRecognizer.delegate = self
87
+ self.addGestureRecognizer(rotationRecognizer)
88
+
89
+ let pinchRecognizer: UIPinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: "pinchGesture:")
90
+ pinchRecognizer.delegate = self
91
+ self.addGestureRecognizer(pinchRecognizer)
92
+ }
93
+
94
+ func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
95
+ return true
96
+ }
97
+
98
+ func rotationGesture(gesture: UIRotationGestureRecognizer) {
99
+ if !isMoving && gesture.state == UIGestureRecognizerState.Began {
100
+ isMoving = true
101
+ currentTransform = self.transform
102
+ } else if isMoving && gesture.state == UIGestureRecognizerState.Ended {
103
+ isMoving = false
104
+ scale = 1.0
105
+ angle = 0.0
106
+ }
107
+
108
+ angle = gesture.rotation
109
+
110
+ let transform = CGAffineTransformConcat(CGAffineTransformConcat(currentTransform, CGAffineTransformMakeRotation(angle)), CGAffineTransformMakeScale(scale, scale))
111
+
112
+ self.transform = transform
113
+ }
114
+
115
+ func pinchGesture(gesture: UIPinchGestureRecognizer) {
116
+ if !isMoving && gesture.state == UIGestureRecognizerState.Began {
117
+ isMoving = true
118
+ currentTransform = self.transform
119
+ } else if isMoving && gesture.state == UIGestureRecognizerState.Ended {
120
+ isMoving = false
121
+ scale = 1.0
122
+ angle = 0.0
123
+ }
124
+
125
+ scale = gesture.scale
126
+
127
+ let transform = CGAffineTransformConcat(CGAffineTransformConcat(currentTransform, CGAffineTransformMakeRotation(angle)), CGAffineTransformMakeScale(scale, scale))
128
+
129
+ self.transform = transform;
130
+ }
131
+
132
+ override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
133
+ self.superview?.bringSubviewToFront(self)
134
+ /****動かしたら枠線を表示!****/
135
+ self.layer.borderWidth = 2.0
136
+ self.layer.borderColor = UIColor.redColor().CGColor
137
+
138
+ }
139
+
140
+ override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
141
+ let touch = touches.first!
142
+
143
+ let dx = touch.locationInView(self.superview).x - touch.previousLocationInView(self.superview).x
144
+ let dy = touch.locationInView(self.superview).y - touch.previousLocationInView(self.superview).y
145
+
146
+ self.center = CGPointMake(self.center.x + dx, self.center.y + dy)
147
+
148
+ self.layer.borderWidth = 2.0
149
+
150
+ }
151
+
152
+ override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
153
+ /*****保存のときに邪魔だからイベントが終わったら消す!****/
154
+ self.layer.borderWidth = 0.0
155
+ self.layer.borderColor = UIColor.clearColor().CGColor
156
+
157
+ }
158
+
159
+ }
160
+ ```
161
+ [世界一受けたいiPhoneアプリ開発の授業](http://www.amazon.co.jp/No-1%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E8%AC%9B%E5%B8%AB%E9%99%A3%E3%81%AB%E3%82%88%E3%82%8B%E3%80%80%E4%B8%96%E7%95%8C%E4%B8%80%E5%8F%97%E3%81%91%E3%81%9F%E3%81%84iPhone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E6%8E%88%E6%A5%AD-%EF%BC%BBiOS-Xcode-Swift%E5%AF%BE%E5%BF%9C%EF%BC%BD-%E6%A1%91%E6%9D%91%E6%B2%BB%E8%89%AF-ebook/dp/B00VREXWBC/ref=sr_1_42?ie=UTF8&qid=1455868739&sr=8-42&keywords=swift)をベースに作ってます!