简体   繁体   中英

UIscrollview not scrolling swift

I have the following problem, I have created view1 above view2

Then added scrollview to view1 , the scrollview contains some ui elements added by code

The problem that my scrollview is not scrolling, and the content of it appear above view 2 while I need it to be behind it and to be able to scroll it

screenshot is following

在此处输入图片说明

my code of adding UI elements is following

        mainScrollView = UIScrollView(frame: CGRectMake(0, 0, self.view.frame.size.width, 1000))

        let awesomeView2: UIImageView = UIImageView(frame: CGRectMake(0, 0, self.view.frame.size.width, 180))
        awesomeView2.load(selectedItem.listingImage);

        mainScrollView.addSubview(awesomeView2);

        let title: UILabel = UILabel(frame: CGRectMake(0, 180, self.view.frame.size.width, 44));
        title.text = selectedItem.listingTitle;
        title.textAlignment = .Right;

        mainScrollView.addSubview(title);

        let catName: UILabel = UILabel(frame: CGRectMake(200, 224, 120, 21));
        catName.text = selectedItem.catName
        catName.textAlignment = .Right;

        mainScrollView.addSubview(catName);

        let datePublished: UILabel = UILabel(frame: CGRectMake(0, 224, 200, 21));
        datePublished.text = selectedItem.dateCreated
        datePublished.textAlignment = .Left

        mainScrollView.addSubview(datePublished);

        let grayColor = UIColor(red: 1, green: 165/255, blue: 0, alpha: 1)
        let iconsView: UIView = UIView(frame: CGRectMake(0, 250, self.view.frame.size.width, 32));
        iconsView.backgroundColor = grayColor
        mainScrollView.addSubview(iconsView);

        if (KhawaterDataManager.instance.banners.itemBanners.count > 0) {

            let awesomeView3: UIImageView = UIImageView(frame: CGRectMake(0, 282, self.view.frame.size.width, 50))
            awesomeView3.load(KhawaterDataManager.instance.banners.itemBanners[0].image);
            mainScrollView.addSubview(awesomeView3);
        }


        // test

        let catName1: UILabel = UILabel(frame: CGRectMake(0, 335, self.view.frame.size.width, 50));
        catName1.text = selectedItem.catName

        mainScrollView.addSubview(catName1);

        let catName2: UILabel = UILabel(frame: CGRectMake(0, 385, self.view.frame.size.width, 50));
        catName2.text = selectedItem.catName
        mainScrollView.addSubview(catName2);


        let catName3: UILabel = UILabel(frame: CGRectMake(0, 435, self.view.frame.size.width, 50));
        catName3.text = selectedItem.catName
        mainScrollView.addSubview(catName3);

        mainScrollView.contentSize = CGSizeMake(self.view.frame.size.width, 1000)
        mainScrollView.scrollEnabled = true;

        mainView.addSubview(mainScrollView);

please anyone tell me what is the problem here ?

Please check this line

mainScrollView.contentSize = CGSizeMake(self.view.frame.size.width, 1000)

Why content height 1000. This is too much. This should be

mainScrollView.contentSize = CGSizeMake(self.view.frame.size.width, 435+50)

And another issue is that why set your scollView as sub view of mainView rather than self.view .

Also you might want to add all subviews (awesomeView2, title, catName, etc) to container view, and then add container view to scroll view. something like:

let containerView: UIView = {
    let view = UIView()
    view.addSubview(self.awesomeView2)
    view.addSubview(self.title)
    view.addSubview(self.catName)
    view.addSubview(self.datePublished)
    return view
}()

mainScrollView.addSubview(containerView)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM