page control 的 outlet 是 pageControl。

@IBOutlet weak var pageControl: UIPageControl!

設定 page control 的背景樣式

型別 UIPageControl.BackgroundStyle 的 backgroundStyle 控制 page control 的背景樣式,將它改成 prominent 將在背後顯示灰色圓角長條。

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
pageControl.backgroundStyle = .prominent
}

設定小圓點採用同一個圖片

小圓點滿好的,不過有時我們希望 App 能特立獨行,不想跟別的 App 一樣。在 iOS 14,我們可以客製 page control 的圖片,想把小圓點換成太陽月亮也不是問題。

設定 preferredIndicatorImage 控制小圓點的圖片。

pageControl.preferredIndicatorImage = UIImage(systemName: "sun.max.fill")

剛剛的例子採用的是 SF Symbols,我們也可以使用自己在 assets 加入的圖片,不過請記得它會變成單色,而不是原來的彩色。

pageControl.preferredIndicatorImage = UIImage(named: "peter")

設定小圓點採用不同圖片

我們也可以設定小圓點採用不同的圖片,透過 function setIndicatorImage(_:forPage:)

以下程式設定第一個小圓點顯示月亮,其它則顯示太陽。

pageControl.preferredIndicatorImage = UIImage(systemName: "sun.max.fill")
pageControl.setIndicatorImage(UIImage(systemName: "moon.fill"), forPage: 0)

甚至我們還可讓每個小圓點都不一樣,例如以下例子將小圓點換成數字圖:

for page in 0..<pageControl.numberOfPages {
pageControl.setIndicatorImage(UIImage(systemName: "\(page).circle"), forPage: page)
}

小圓點的數量不再受限

從前小圓點的數量是受限的,比方當我們有 30 個小圓點時,它顯示時將超出螢幕。

如下圖所示,第一個小圓點在螢幕之外,所以我們滑到第三頁時才看到變色,畫面裡的第一個小圓點其實是第三個點。

在 iOS 14,同樣是 30 個小圓點,它並不會傻傻地一次全部顯示。如下圖所示,它只會顯示前幾個點,當我們滑動時,小圓點將聰明地移動更新,讓我們知道滑到下一頁了。

拖曳快速移動小圓點

在 iOS 14,我們可以在小圓點上用拖曳的方式快速移動到某個小圓點。

如果想關掉拖曳模式,則可將 allowsContinuousInteraction 設為 false,此時在小圓點上只能用點擊的方式換到下個小圓點。

pageControl.allowsContinuousInteraction = false

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com