-5.5 C
New York
Saturday, February 22, 2025

ios – Offset view containing horizontally scrollable assortment view in superview, whereas additionally permitting to scroll to edges of superview


As an alternative of including mainView on to superview, wrap it in a containerView that spans the total width of superview. Then, shift mainView inside this container utilizing a number one constraint. Instance utilizing UIKit –

class ViewController: UIViewController {
        let superview = UIView()
        let mainView = UIView()
        let containerView = UIView()
        let collectionView = UICollectionView(body: .zero, collectionViewLayout: UICollectionViewFlowLayout())
    
        override func viewDidLoad() {
            tremendous.viewDidLoad()
    
            // Add containerView to superview 
            superview.addSubview(containerView)
            containerView.translatesAutoresizingMaskIntoConstraints = false
            NSLayoutConstraint.activate([
                containerView.topAnchor.constraint(equalTo: superview.topAnchor),
                containerView.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
                containerView.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
                containerView.trailingAnchor.constraint(equalTo: superview.trailingAnchor)
            ])
    
            // Add mainView to containerView with an offset
            containerView.addSubview(mainView)
            mainView.translatesAutoresizingMaskIntoConstraints = false
            let offset: CGFloat = x // Replace with desired worth
            NSLayoutConstraint.activate([
                mainView.topAnchor.constraint(equalTo: containerView.topAnchor),
                mainView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor),
                mainView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: offset),
                mainView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor)
            ])
    
            // Add collectionView inside mainView (Assuming it takes full width)
            mainView.addSubview(collectionView)
            collectionView.translatesAutoresizingMaskIntoConstraints = false
            NSLayoutConstraint.activate([
                collectionView.topAnchor.constraint(equalTo: mainView.topAnchor),
                collectionView.bottomAnchor.constraint(equalTo: mainView.bottomAnchor),
                collectionView.leadingAnchor.constraint(equalTo: mainView.leadingAnchor),
                collectionView.trailingAnchor.constraint(equalTo: mainView.trailingAnchor)
            ])
    
            // Alter collectionView contentInset to permit full scrolling
            collectionView.contentInset = UIEdgeInsets(prime: 0, left: -offset, backside: 0, proper: 0)
        }
    }

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles