質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1561閲覧

カメラアプリのスタンプ

T_PoiPoi

総合スコア16

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/02/19 06:10

編集2016/02/19 08:01

こんにちは!

カメラアプリを作成しているのですが、既存のカメラアプリに実装されている枠線と矢印みたいな機能は
どうすればつけることができますか?
↓こんなの
イメージ説明

指で拡大縮小もできるけど、ボタンでもすいすい拡大縮小回転なんでもできるような
機能をぜひつけたいと思っているので、教えてください!

よろしくお願いします!


2/19 16:43追記

ikuwowさん 見てくださってありがとうございます!

表示する画面のコード

class ViewController: UIViewController { @IBOutlet var backImageView: UIImageView! var appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate override func viewDidLoad() { super.viewDidLoad() setImage() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } /****ここでカメラロールで選んだ写真を表示!****/ func setImage() { backImageView.image = selectImage } override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) /****ここでスタンプを表示!****/ if appDelegate.isNewStampAdded == true { let stamp = appDelegate.stampArray.last! stamp.frame = CGRectMake(0, 0, 150, 150) stamp.center = canvasView.center stamp.userInteractionEnabled = true canvasView.addSubview(stamp) appDelegate.isNewStampAdded = false } } /****スタンプを追加するためのボタン!****/ @IBAction func stampTapped() { let alert = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet) alert.addAction(UIAlertAction(title: "スタンプを追加", style: .Default) { action in let ss = self.storyboard?.instantiateViewControllerWithIdentifier("StampSelectTab") as! SelectTabViewController ss.modalTransitionStyle = UIModalTransitionStyle.CoverVertical self.presentViewController(ss, animated: true, completion: nil) }) alert.addAction(UIAlertAction(title: "フレームを追加", style: .Default) { action in //実装予定!いつかフレームも追加したい! }) alert.addAction( UIAlertAction(title: "キャンセル", style: UIAlertActionStyle.Cancel, handler: nil) ) presentViewController(alert, animated: true, completion: nil) } }

スタンプを動かしているコード

class Stamp: UIImageView, UIGestureRecognizerDelegate { var currentTransform: CGAffineTransform! var scale: CGFloat = 1.0 var angle: CGFloat = 0 var isMoving: Bool = false override func didMoveToSuperview() { let rotationRecognizer: UIRotationGestureRecognizer = UIRotationGestureRecognizer(target: self, action: "rotationGesture:") rotationRecognizer.delegate = self self.addGestureRecognizer(rotationRecognizer) let pinchRecognizer: UIPinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: "pinchGesture:") pinchRecognizer.delegate = self self.addGestureRecognizer(pinchRecognizer) } func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true } func rotationGesture(gesture: UIRotationGestureRecognizer) { if !isMoving && gesture.state == UIGestureRecognizerState.Began { isMoving = true currentTransform = self.transform } else if isMoving && gesture.state == UIGestureRecognizerState.Ended { isMoving = false scale = 1.0 angle = 0.0 } angle = gesture.rotation let transform = CGAffineTransformConcat(CGAffineTransformConcat(currentTransform, CGAffineTransformMakeRotation(angle)), CGAffineTransformMakeScale(scale, scale)) self.transform = transform } func pinchGesture(gesture: UIPinchGestureRecognizer) { if !isMoving && gesture.state == UIGestureRecognizerState.Began { isMoving = true currentTransform = self.transform } else if isMoving && gesture.state == UIGestureRecognizerState.Ended { isMoving = false scale = 1.0 angle = 0.0 } scale = gesture.scale let transform = CGAffineTransformConcat(CGAffineTransformConcat(currentTransform, CGAffineTransformMakeRotation(angle)), CGAffineTransformMakeScale(scale, scale)) self.transform = transform; } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { self.superview?.bringSubviewToFront(self) /****動かしたら枠線を表示!****/ self.layer.borderWidth = 2.0 self.layer.borderColor = UIColor.redColor().CGColor } override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { let touch = touches.first! let dx = touch.locationInView(self.superview).x - touch.previousLocationInView(self.superview).x let dy = touch.locationInView(self.superview).y - touch.previousLocationInView(self.superview).y self.center = CGPointMake(self.center.x + dx, self.center.y + dy) self.layer.borderWidth = 2.0 } override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { /*****保存のときに邪魔だからイベントが終わったら消す!****/ self.layer.borderWidth = 0.0 self.layer.borderColor = UIColor.clearColor().CGColor } }

世界一受けたいiPhoneアプリ開発の授業をベースに作ってます!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2016/02/19 07:24

全部説明するのは難しいので、途中まで書いたコードを追記していただけますでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問