如何在Swift中创建一个可水平滚动的组件放在我的UIViewController中?

时间:2016-02-24 20:04:25

标签: ios swift uiviewcontroller uipageviewcontroller

我有一个UIViewController包含两个较小的视图:mapViewimageView一个放在另一个之上:

enter image description here

我想改变它,所以当用户打开这个视图控制器时,他会看到下面的地图和虚线元素,如下所示:

enter image description here

但它应该只引用页面上的那两个元素 - 当用户来回滑动时,其余元素应保持不变。

我看到一些教程将这些点放在屏幕的最底部,然后整个屏幕都可以滚动,但只有页面上选定的组件才可以实现吗?

2 个答案:

答案 0 :(得分:1)

使用滚动视图,如上所述启用分页 -

您的类应该是UIScrollViewDelegate的子类 您将需要滚动视图的IBOutlet。 (比如滚动)

在viewDidLoad中 -

//First set frame and content size for scroll view.
scroll.frame = CGRectMake(0, 0, self.view.frame.width, 120)
scroll.delegate = self
scroll.contentSize = CGSizeMake(self.view.frame.width * 2, 120)

//Then create your imageView and mapView and add them to the scroll view.
let imgView = UIImageView(frame: CGRectMake(0, 0, scroll.frame.width, 100))
//Do whatever changes you want in the imgView
scroll.addSubview(imgView)

let viewForMap = UIMapView(frame: CGRectMake(scroll.frame.width, 0, scroll.frame.width, 100))
//Do whatever changes you want in the viewForMap
scroll.addSubview(viewForMap)

var pageControl : UIPageControl = UIPageControl(frame: CGRectMake(self.view.center.x - 20, 100, 40, 20))
pageControl.numberOfPages = n //2 in your case
pageControl.currentPage = 0  //For initial page
pageControl.pageIndicatorTintColor = UIColor.grayColor()
pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
view.addSubview(pageControl)

要在页面控件上显示当前页面指示符,您需要 -

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
    pageControl.currentPage = Int(pageNumber)
}

如果您按照上述内容进行适合您的任何更改,您可以开发出您想要的内容。 希望这会有所帮助。

答案 1 :(得分:0)

UIScrollView pagingEnabled用于滚动,UIPageControl用于显示"虚线元素"如你所说。