昨天使用swift寫一個cell時,使用pagecontrol,在設其frame想讓其居中,使用兩個方法swift
設原點x座標爲WXDevice.width/2 - pageWidth/2 ide
設pagecontrol 原點點x=0,width = WXDevice.width佈局
但結果兩種方法都有問題(5S中卻顯示居中),pagecontrol 位置總有偏移,最後的解決方法是,在layoutSubviews方法裏設置,其frmespa
override func layoutSubviews() {it
super.layoutSubviews()scroll
self.pageControl.frame = CGRectMake(0, vHeight - 10, deviceWidth, 20)方法
}layout
問題就解決了,大概的緣由,是這樣的,當開始設置frame時,上面兩個方法設的位置的確是居中,只是設備默認一開始,以320爲設備寬度,因此當實際設備的寬度不是320時,進行從新佈局時,就會出現這個問題。這也是爲何5s顯示居中的緣由。
di
self.likeScrollView = UIScrollView()view
self.likeScrollView.frame = CGRectMake(CGFloat(0), 0, deviceWidth, CGFloat( vHeight))
self.likeScrollView.showsHorizontalScrollIndicator = false //去掉默認水平滑動條
self.likeScrollView.pagingEnabled = true // 翻頁屬性
self.likeScrollView.contentSize = CGSizeMake(deviceWidth * CGFloat(pageCount), CGFloat(self.likeScrollView.frame.size.height))
self.likeScrollView.delegate = self
self.contentView.addSubview(self.likeScrollView)
//for 添加每頁的view
for (var i = 0 ; i < pageCount; i++) {
var v: UIView = UIView(frame: CGRectMake(CGFloat(i) * deviceWidth, self.titleLB.frame.size.height, deviceWidth, self.likeScrollView.frame.size.height))
self.likeScrollView.addSubview(v)
}
self.pageControl = UIPageControl()
self.pageControl.numberOfPages = pageCount;
self.pageControl.pageIndicatorTintColor = UIColor.grayColor()// 設置非選中頁的圓點顏色
self.pageControl.pageIndicatorTintColor = UIColor(red: 204/255.0, green: 204/255.0, blue: 204/255.0, alpha: 0.5) // #cccccc
self.pageControl.currentPageIndicatorTintColor = UIColor.redColor()// 設置選中頁的圓點顏色
self.pageControl.currentPageIndicatorTintColor = UIColor(red: 225/255.0, green: 22/255.0, blue: 68/255.0, alpha: 1) // #e11644
self.pageControl.enabled = false // 禁止默認的點擊功能
self.pageControl.backgroundColor = UIColor.clearColor()
self.pageControl.currentPage = 0
self.contentView.addSubview(self.pageControl)
override func layoutSubviews() {
super.layoutSubviews()
self.pageControl.frame = CGRectMake(0, vHeight - 10, deviceWidth, 20)
}
//滑動切換
func scrollViewDidScroll(scrollView: UIScrollView) {
var pageWidth:CGFloat = scrollView.frame.size.width;
var page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
self.pageControl.currentPage = Int( page)
}