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

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

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

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

Q&A

解決済

1回答

4135閲覧

swift UIScrollViewで拡大した後のビューを固定(スクロールさせない)するにはどうしたらよいでしょうか

te_w

総合スコア19

Swift

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

0グッド

0クリップ

投稿2016/01/17 04:08

編集2016/01/18 09:51

###前提・実現したいこと
UIScrollViewで画面上に配置したビューや画像を拡大(縮小)させたあとに、スクロールさせたくないビューを固定させたい。

###発生している問題
以下のサイトを参考に、拡大する前の状態ではビューを固定させることができたのですが、スクロールビュー上のビューや画像を拡大させたあとに固定にしたいビューがうまく固定されません。
拡大をさせた上で、スクロール時はビュー固定をするにはどうしたらよいでしょうか?

スクロールビュー上にスクロール用のビュー、その上にビュー1、ビュー2を置き、ピンチでビュー1ビュー2を拡大(ベースのビューも拡大)、ビュー2だけスクロールさせず固定したい。
1つのスクロールビュー上にビューを2つaddSubviewし、1つをヘッダーのようなイメージで固定させたい。

よろしくお願いいたします。

参考にしたサイト
http://qiita.com/zaziko_github/items/93ae7b7311349396c1b4

class ViewController: UIViewController,UIScrollViewDelegate { //スクロール private var scrView: UIScrollView! private var view1: UIView! private var view2: UIView! private var view3: UIView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // ScrollViewを生成 scrView = UIScrollView() scrView.frame = CGRectMake(0,0,500,500); scrView.contentSize = CGSizeMake(1000, 1000) scrView.contentOffset = CGPointMake(0, 0); scrView.minimumZoomScale = 1 scrView.maximumZoomScale = 5 scrView.scrollEnabled = true scrView.decelerationRate = UIScrollViewDecelerationRateNormal scrView.backgroundColor = UIColor.orangeColor() scrView.delegate = self self.view.addSubview(scrView) view1 = UIView(frame: CGRectMake(0,0,300,300)) view1.backgroundColor=UIColor.greenColor() scrView.addSubview(view1) //動かさないビュー view2 = UIView(frame: CGRectMake(0,0,100,30)) view2.backgroundColor=UIColor.blueColor() view1.addSubview(view2) view3 = UIView(frame: CGRectMake(0,30,50,30)) view3.backgroundColor=UIColor.redColor() view1.addSubview(view3) } func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { scrView.contentSize = CGSizeMake(1000, 1000)//サイズが変わってしまうため return view1 } func scrollViewDidScroll(scrollView: UIScrollView) { let currentPoint = scrollView.contentOffset; view2.frame = CGRectMake(currentPoint.x,currentPoint.y,100,30); } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

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

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

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

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

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

Stripe

2016/01/17 05:45

要するに、スクロールビューが2つあるという事ですか?
Stripe

2016/01/17 08:53

あたなは、どんなコードを書きましたか?
fuzzball

2016/01/18 02:04

ピンチ時に拡縮させているコードを教えて下さい。こちらのテストでは拡縮しても特に問題なく固定されたままでした。
guest

回答1

0

ベストアンサー

Swift

1func scrollViewDidScroll(scrollView: UIScrollView) { 2 let currentPoint = scrollView.contentOffset; 3 view2.frame = CGRectMake(currentPoint.x / scrollView.zoomScale, currentPoint.y / scrollView.zoomScale,100,30); 4}

これで動かないでしょうか?

追記:
こちらの情報も参考になるかと思います。
http://cocoadays.blogspot.jp/2010/09/uiscrollviewcontentoffset-zoomscale.html

投稿2016/01/18 15:06

編集2016/01/18 15:21
u39ueda

総合スコア950

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

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

te_w

2016/01/19 00:27

ありがとうございました。 固定できましたし、理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問