私はUIPageControlをカスタマイズする必要があるとき、私はthisとthisのソリューションを使用しました。ドットイメージのカスタムUIPageControl
は少し私たちが持っているSWIFTの新しいバージョンのためにそれを修正する:
class myPageControl: UIPageControl {
var activeImage: UIImage!
var inactiveImage: UIImage!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
activeImage = UIImage(named: "active.png")!
inactiveImage = UIImage(named: "inactive.png")!
}
func updateDots()
{
for i in 0 ..< self.subviews.count
{
let dot : UIImageView = imageViewForSubview(self.subviews[i])
if (i == self.currentPage) {
dot.image = activeImage
}
else {
dot.image = inactiveImage
}
}
}
func imageViewForSubview(view: UIView) -> UIImageView {
var dot: UIImageView? = nil
if (view.isKindOfClass(UIView)) {
for subview: UIView in view.subviews {
if (subview is UIImageView) {
dot = (subview as! UIImageView)
}
}
if dot == nil {
dot = UIImageView(frame: CGRectMake(0.0, 0.0, view.frame.size.width, view.frame.size.height))
view.addSubview(dot!)
}
}
else {
dot = (view as! UIImageView)
}
return dot!
}
func setPage(page: Int) {
super.currentPage = page
self.updateDots()
}
}
私の問題は、あなたが最初にアプリを起動したとき、私は絵を変更することはできませんということです。 ページが変更されたときのみ変更されます。
viewDidLoad()
には、setPage(0)
とupdateDots()
を追加しましたが、結果はありません。私は何が間違っていますか?
ここでは、「updateDots()」を呼び出す方が効果的です。まだ試してみませんでしたが、ドミトリーはnumberOfPagesとcurrentPage変数をオーバーライドすることを提案します - > http://stackoverflow.com/questions/12190147/customize-dot-with-image-of-uipagecontrol-at-index-0-of- uipagecontrol/41136917#41136917 – CodenameDuchess