UIPageControl修改圓點大小,根據View大小自適應


遇到了個基本的控件問題,當設置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

 

上面的代碼根據圓點個數將圓點平均分布到底層視圖上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM