質問編集履歴
1
質問の編集
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)をベースに作ってます!
|