2016-08-09 2 views
4

UIViewController이 클래스에는 Swift 코드가 연결되어 있습니다. 이 코드는 기본적으로 View Controller에 UIScrollView 이미지를 추가합니다.UICcrollView가 ViewController에 표시 될 때 UIButton이 표시되지 않습니다.

내가 그러나이 경우에는 UIButton 내가 코드를 통해 할 수있는 ViewController에 추가하고자하고, 나는 스토리 보드를 사용하여 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를 차단하고,

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

가있는 UIButton 이하

스위프트있는 ScrollView를 삽입하는 데 사용할주세요

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

대답 대신이 줄 view.addSubview(scrollView)

, 당신은 self.view.insertSubview(scrollView, atIndex: 0)을하고 UIButtonscrollView 위에 있는지 확인해야합니다.

+0

'UIButton'은 스토리 보드에 생성되고'UIScrollView'는 코드로 생성됩니다. 스위프트에서 위의 코드를 복사했지만 아무 것도하지 않는 것 같습니다. 특정 장소를 배치해야합니까? – 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

관련 문제