![](/img/trans.png)
[英]How do implement UIScrollView and UIPageControl Programmatically in Swift4?
[英]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))
在viewDidLoad中設置scrollView委托並調用`configurePageControl():
override func viewDidLoad() { super.viewDidLoad() scrollView.delegate = self configurePageControl() }
你需要在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.