ScrollView内部的MapView和UICollectionView创建粘性Mapview

时间:2018-08-22 12:40:13

标签: ios swift uicollectionview scrollview mkmapview

我有一个滚动视图,其中有一个MapView和UICollectionView。 mapview放置在滚动视图的停止位置,collectionview锚定在mapview的下面。

现在,当我滚动地图视图时,其顶部仍保持“粘性”,而集合视图仅在其下方滚动。 id希望地图视图实际向上滚动而不粘在视图顶部。

class MapViewController: UIViewController {

    let mapView: MKMapView = {
        let map = MKMapView()
        map.mapType = .standard
        map.isZoomEnabled = true
        map.isScrollEnabled = true
        return map
    }()

    let scrollView = UIScrollView()
    let listViewController = ListViewController(collectionViewLayout: UICollectionViewFlowLayout())

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(scrollView)
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
        scrollView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true

        scrollView.addSubview(mapView)
        mapView.anchor(top: scrollView.topAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 200)

        scrollView.addSubview(listViewController.view)
        listViewController.view.anchor(top: mapView.bottomAnchor, left: view.leftAnchor, bottom: view.safeAreaLayoutGuide.bottomAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
    }
}

我希望mapview保持可滚动状态,所以我不想禁用其滚动。我还需要它下面的collectionview是可滚动的,因为我在另一个必须在其中滚动的视图中的其他地方使用了ListView,并且我不想在该级别禁用它。

我想到也许不用将这两个元素分开,我可以使用标题单元格并在其中放置一个视图?但是然后我需要将collecitonview放置在collectionview内,这似乎不是一个好主意。

0 个答案:

没有答案