Search code examples
iosswifthorizontalscrollviewautoscroll

Horizontal ScrollView not fit its sub ImageViews?


I want horizontal scrollview with image view but image is not fitting with the scroll. i am doing this code but not getting the right thing Here is my code

@IBOutlet weak var upperScroll: UIScrollView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.navigationBar.isHidden = true
        // Do any additional setup after loading the view.
        var logoImage: [UIImage] = [
            UIImage(named: "slider.png")!,
            UIImage(named: "slider.png")!,
            UIImage(named: "slider.png")!,
            UIImage(named: "slider.png")!,
        ]

        upperScroll.isScrollEnabled = true
        let scrollWidth: Int = Int(self.view.frame.width)
        upperScroll.contentSize = CGSize(width: CGFloat(scrollWidth), height:(self.upperScroll.frame.height))
        upperScroll.frame = CGRect(x: 0, y: 51, width: upperScroll.frame.size.width, height: self.upperScroll.frame.height)
        upperScroll.backgroundColor = UIColor.red
        var xOffset: Int = 0
        for index in 0..<logoImage.count {
            let img = UIImageView(frame: CGRect(x: CGFloat(xOffset), y: 0, width: upperScroll.frame.size.width, height: self.upperScroll.frame.height))
            img.image = logoImage[index]
            upperScroll.addSubview(img)
            xOffset += 100
        }
        view.addSubview(upperScroll)
        upperScroll.contentSize = CGSize(width: CGFloat((scrollWidth + xOffset)), height: 110)

    }

i am getting this but i want this type

Can anyone please help me? Thanks


Solution

  • Just remove your appdelegate code and add my fuction also set scrollview constraint like leading,trailing,top,bottom Zero

      func scrollImage() {
                super.viewDidLoad()
                self.navigationController?.navigationBar.isHidden = true
                // Do any additional setup after loading the view.
                var logoImage: [UIImage] = [
                UIImage(named: "slider.png")!,
                UIImage(named: "slider.png")!,
                UIImage(named: "slider.png")!,
                UIImage(named: "slider.png")!]
    
                upperScroll.isPagingEnabled = true
    
                upperScroll.isScrollEnabled = true
    
                let scrollWidth: Int = Int(self.view.frame.width)
    ,
                upperScroll.contentSize = CGSize(width: CGFloat(scrollWidth), height:(self.upperScroll.frame.height))
                print(upperScroll.frame.size.width)
                upperScroll.backgroundColor = UIColor.red
                for index in 0..<logoImage.count {
                    let xPosition = self.view.frame.width * CGFloat(index)
                    upperScroll.layoutIfNeeded()
                    let img = UIImageView(frame: CGRect(x: CGFloat(xPosition), y: 0, width: upperScroll.frame.size.width, height: self.upperScroll.frame.height))
                    img.layoutIfNeeded()
                    img.image = logoImage[index]
                    upperScroll.addSubview(img)
                }
                view.addSubview(upperScroll)
                upperScroll.contentSize = CGSize(width: CGFloat((scrollWidth) * logoImage.count), height: self.upperScroll.frame.height)
    
            }
    

    I hope it's save your time and working great