当UIScrollView在ViewController上显示时,UIButton不显示

时间:2016-08-09 16:18:31

标签: ios swift optimization uiscrollview uibutton

我有一个附加到类的UIViewController,下面是Swift代码。该代码基本上将带有图像的UIScrollView添加到视图控制器。

我想通过代码向UIButton添加ViewController,但在这种情况下,我想将UIButton添加到ViewController使用故事板。

当我添加UIButton然后运行我的项目时,UIButton不可见,只有UIScrollView可见。

问题:

发生了什么,为什么UIButton不可见?如何在运行项目时添加UIButton(到故事板)并确保它在UIScrollView(以编程方式创建)前面可见?<​​/ em>

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)
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您的滚动视图阻止了z轴上的UIButton,请使用

var dataFromServer; //declare the variable first function getData() { $.ajax({ url : 'example.com', type: 'GET', success : handleData(dataFromServer) }) } function handleData(data) { alert(data); //insert your for loop here }

在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)高于UIButton

答案 1 :(得分:1)

你必须写:

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