簡體   English   中英

如何在Swift中實現UIPageControl

[英]How do I implement UIPageControl in Swift

好的,所以我在這里掙扎,但卻找不到合適的解決方案。 我一直在自學Swift而沒有Objective C經驗(我知道,我知道)。

在我的應用程序中,我有我的主要UIViewController ,一個透明的子視圖,但是從屏幕底部滑入,然后滑動子視圖的4個子視圖都在工作UIScrollViews。 我啟用了分頁,它運行良好,但我想為每個分區添加一個UIPageControl。 我認真無法掌握代表以及如何實現使用swift。 任何幫助將非常感激!

另外,我是以編程方式進行的,所以請不要IB。 很高興提供代碼,如果它會有所幫助。 謝謝

我認為你和/或任何其他尋找如何做到這一點的人都會覺得這個答案很有幫助。 代碼示例使我能夠在我的scrollView上創建一個頁面控件指示器,這是第一次嘗試這樣做。 我發現它很清楚。

您可能需要添加到項目中的行是:

1:首次命名視圖控制器類時,將UIScrollViewDelegate添加為協議。

2:在類聲明中創建一個pageControl變量。 您需要使用幀編號才能使其顯示在您想要的位置。 目前的數字讓我在窗口中間。 作為參考,數字表示(指示器左上角的x位置,左上角的y坐標,頁面指示器的寬度,頁面指示器的高度)

var pageControl : UIPageControl = UIPageControl(frame: CGRectMake(50, 300, 200, 20))

  1. 在viewDidLoad中設置scrollView委托並調用`configurePageControl():

     override func viewDidLoad() { super.viewDidLoad() scrollView.delegate = self configurePageControl() } 
  2. 你需要在viewDidLoad之后添加兩個方法。 一個在viewDidLoad中調用

     func configurePageControl() { self.pageControl.numberOfPages = <some reference to the number of pages> self.pageControl.currentPage = 0 self.pageControl.tintColor = UIColor.redColor() self.pageControl.pageIndicatorTintColor = UIColor.blackColor() self.pageControl.currentPageIndicatorTintColor = UIColor.greenColor() self.view.addSubview(pageControl) } 

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

scrollView委托實際上很容易設置。 添加UIScollViewDelegate作為ViewController類將通過在類聲明之后添加它來實現的協議: class YourClassName: UIScrollViewDelegate 然后在viewDidLoad()中,通過使用scrollView.delegate = self滾動視圖的委托屬性分配給您的類來完成委托設置。 (如果您需要進一步說明這些命令的去向,請再次查看我鏈接的示例)

只需在代碼中設置它:

private var pageControl = UIPageControl(frame: .zero)

private func setupPageControl() {

    pageControl.numberOfPages = controllers.count
    pageControl.translatesAutoresizingMaskIntoConstraints = false
    pageControl.currentPageIndicatorTintColor = UIColor.orange
    pageControl.pageIndicatorTintColor = UIColor.lightGray.withAlphaComponent(0.8)

    let leading = NSLayoutConstraint(item: pageControl, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0)
    let trailing = NSLayoutConstraint(item: pageControl, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0)
    let bottom = NSLayoutConstraint(item: pageControl, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0)

    view.insertSubview(pageControl, at: 0)
    view.bringSubview(toFront: pageControl)
    view.addConstraints([leading, trailing, bottom])
}

代表只是一個類的方法,可以歸結為另一個類。 這些方法通常都是回調。

例如,當用戶點擊返回時,TextField的回調可以在Delegate中實現。 委托可以在ViewController類中實現。

現在當用戶點擊返回時,TextField對象將調用ViewController對象中的委托方法。 關於這一點的好處是,您可以從委派方法訪問ViewController對象的所有變量和方法。 否則,您需要TextField對象本身內的ViewController對象的句柄。

代表實現為協議,它們只是接口。 因此,如果ViewController實現TextFieldDelegate協議,則可以從ViewController對象中調用所有文本字段回調。

我希望這有幫助。

使用Swift 4進行UIPageControl集成

func configurePageControl() {
    self.pageview.numberOfPages = items.count
    self.pageview.currentPage = 0
    self.pageview.tintColor = UIColor.red
    self.pageview.pageIndicatorTintColor = UIColor.black
    self.pageview.currentPageIndicatorTintColor = UIColor.green
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM