遇到了個基本的控件問題,當設置UIPageControl的frame很小時,上面的小圓點會忽視view的frame而將圓點顯示到控件外面。
但是如果想要設置小一點的圓點,或改變圓點間的間距,從而實現自己想要的樣子呢?
查看UIPageControl的接口發現沒有設置圓點間距或大小的屬性或方法,搜了一下,一般的思路是重寫UIPageControl。代碼如下
.h文件 #import <UIKit/UIKit.h> @interface SAPPageControl : UIPageControl @end .m文件 #import "SAPPageControl.h" @implementation SAPPageControl - (void)layoutSubviews { [super layoutSubviews]; CGFloat dotw = self.frame.size.width/(self.subviews.count*2+1); CGFloat marginX = dotw * 2; for (int i=0; i<[self.subviews count]; i++) { UIImageView* dot = [self.subviews objectAtIndex:i]; if (i == self.currentPage) { [dot setFrame:CGRectMake(i * marginX, dot.frame.origin.y - 1, dotw+0.5, dotw+0.5)]; } else { [dot setFrame:CGRectMake(i * marginX, dot.frame.origin.y, dotw, dotw)]; } } } @end
上面的代碼根據圓點個數將圓點平均分布到底層視圖上。