2016-08-09 23 views
4

私はUIViewControllerというクラスにSwiftコードを付けました。コードは、基本的にView ControllerにUIScrollViewというイメージを追加します。私はコードを行うことができますViewControllerUIButtonを追加したいのですUICcrollViewがViewControllerに表示されているときにUIButtonが表示されない

が、しかし、この場合には、私は、ストーリーボードを使用してViewControllerUIButtonを追加したいです。

UIButtonを追加してプロジェクトを実行すると、UIButtonは表示されず、UIScrollViewのみが表示されます。

質問:何が起こっているか

、なぜUIButtonが表示されていませんか? UIButtonを(ストーリーボードに)追加して、それが表示され、プロジェクトを実行するときにUIScrollView(プログラムで作成される)の前に確実に表示するにはどうすればよいですか?


class ScrollViewController: UIViewController, UIScrollViewDelegate { 
    var scrollView: UIScrollView! 
    var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     imageView = UIImageView(image: UIImage(named: "image.png")) 

     scrollView = UIScrollView(frame: view.bounds) 
     scrollView.backgroundColor = UIColor.blackColor() 
     scrollView.contentSize = imageView.bounds.size 
     scrollView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] 

     scrollView.contentOffset = CGPoint(x: 1000, y: 450) 

     scrollView.addSubview(imageView) 
     view.addSubview(scrollView) 

     scrollView.delegate = self 
     setZoomScale() 
     setupGestureRecognizer() 
    } 

    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
     return imageView 
    } 

    override func viewWillLayoutSubviews() { 
     setZoomScale() 
    } 

    func setZoomScale() { 
     let imageViewSize = imageView.bounds.size 
     let scrollViewSize = scrollView.bounds.size 
     let widthScale = scrollViewSize.width/imageViewSize.width 
     let heightScale = scrollViewSize.height/imageViewSize.height 

     scrollView.minimumZoomScale = min(widthScale, heightScale) 
     scrollView.zoomScale = 1.0 
    } 

    func scrollViewDidZoom(scrollView: UIScrollView) { 
     let imageViewSize = imageView.frame.size 
     let scrollViewSize = scrollView.bounds.size 
     let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height)/2 : 0 
     let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width)/2 : 0 

     scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding) 
    } 

    func setupGestureRecognizer() { 
     let doubleTap = UITapGestureRecognizer(target: self, action: "handleDoubleTap:") 
     doubleTap.numberOfTapsRequired = 2 
     scrollView.addGestureRecognizer(doubleTap) 
    } 

    func handleDoubleTap(recognizer: UITapGestureRecognizer) { 
     if (scrollView.zoomScale > scrollView.minimumZoomScale) { 
      scrollView.setZoomScale(scrollView.minimumZoomScale, animated: true) 
     } else { 
      scrollView.setZoomScale(scrollView.maximumZoomScale, animated: true) 
     } 
    } 
} 
+0

設定しましたか? –

+0

はい、幅と高さを設定し、中心に設定します。矛盾はありません。私がプロジェクトを実行し、 'UIScrollView'をズームアウトすると' UIButton'が見えますが、正面ではなく 'UIScrollView'の後ろにあります。 – user4806509

答えて

2

あなたのscrollviewは、z軸にUIButtonをブロックしている、UIButton

スウィフト以下scrollviewを挿入する

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;

を使用してください:

func insertSubview(view: UIView, atIndex index: Int) { 
} 

回答:

代わりに、このラインview.addSubview(scrollView)の、あなたはself.view.insertSubview(scrollView, atIndex: 0)を行うと、UIButtonscrollViewの上にあることを確認する必要があります。

+0

'UIButton'はストーリーボード上に作成され、' UIScrollView'はコード内に作成されます。私は上記のコードをSwiftにコピーしましたが、何もしないようです。特定の場所を置く必要がありますか? – user4806509

+1

この行view.addSubview(scrollView)の代わりに、self.view.insertSubview(scrollView、atIndex:0)を実行して、UIButtonがscrollViewの上にあることを確認する必要があります。 – TilalHusain

+0

ありがとうございます。これはうまくいった。 – user4806509

1

あなたは記述する必要があります:あなたは、ボタンの制約が適切にあなたが競合の任意の並べ替えを持っていないことを確認

self.view.insertSubview(scrollview, belowSubview: button) 
+0

ありがとうございます。これはうまくいった。 – user4806509

関連する問題