1、在.h文件中声明UIScrollView,UIPageControl实例变量,如果不想变量被外部访问,可以在extend里声明;
@property (nonatomic,strong)UIScrollView *m_sc;
@property (nonatomic,strong)UIPageControl *m_pageC;
2、在.m文件中初始化变量m_sc和m_pageC
注:这样的初始化可以做到:变量什么时候用到,就在什么时候创建
-(UIScrollView *)m_sc
{
if (!_m_sc)
{
_m_sc = [[UIScrollViewalloc]initWithFrame:CGRectMake(0,0, self.view.frame.size.width,self.view.frame.size.height)];
[_m_scsetContentSize:CGSizeMake(self.view.frame.size.width*4,self.view.frame.size.height)];
for (int i=0; i<4; i++)
{
UIView *uv = [[UIViewalloc]init];
uv.frame =CGRectMake(self.view.bounds.size.width*i,0 , self.view.bounds.size.width,self.view.bounds.size.height) ;
uv.backgroundColor = [UIColorcolorWithRed:i*0.1+0.5green:i*0.1+0.7blue:i*0.1+0.1alpha:1];
UILabel *lab = [[UILabelalloc]init];
lab.frame = CGRectMake(100, 100, 200, 50);
lab.backgroundColor = [UIColorclearColor];
lab.text = [@"welcome"stringByAppendingFormat:@"%d",i+1 ];
lab.textColor=[UIColorblackColor];
[_m_sc addSubview:uv];
}
_m_sc.showsHorizontalScrollIndicator =NO;
_m_sc.showsVerticalScrollIndicator =NO;
_m_sc.pagingEnabled =YES;
_m_sc.scrollEnabled =YES;
}
return _m_sc;
}
-(UIPageControl *)m_pageC
{
if (!_m_pageC)
{
_m_pageC = [[UIPageControlalloc]initWithFrame:CGRectMake(60,400,200 ,30)];
_m_pageC.backgroundColor = [UIColorclearColor];
_m_pageC.currentPageIndicatorTintColor = [UIColorredColor];
_m_pageC.pageIndicatorTintColor = [UIColorblackColor];
_m_pageC.numberOfPages =4;
}
return_m_pageC;
}
[self.viewaddSubview:self.m_sc];
[self.viewaddSubview:self.m_pageC];
self.m_sc.delegate =self;
3)、实现代理类的方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
int size = self.view.frame.size.width; //屏幕视图的宽度
int page = self.m_sc.contentOffset.x/size; //根据m_sc视图的偏移量来计算当前页数
self.m_pageC.currentPage = page; //改变m_pageC的当前页
}
完整代码:
.h文件
@interface WelcomeViewController :UIViewController <UIScrollViewDelegate>
@end
.m文件
#import "WelcomeViewController.h"
//类的扩展
@interface WelcomeViewController ()
@property (nonatomic,strong)UIScrollView *m_sc;
@property (nonatomic,strong)UIPageControl *m_pageC;
@end
@implementation WelcomeViewController
- (void)viewDidLoad
{
[superviewDidLoad];
[selfbuildLayout];
}
#pragma mark
#pragma mark build interface
-(void)buildLayout
{
self.m_sc.delegate =self;
[self.viewaddSubview:self.m_sc];
[self.viewaddSubview:self.m_pageC];
}
-(UIScrollView *)m_sc
{
if (!_m_sc)
{
_m_sc = [[UIScrollViewalloc]initWithFrame:CGRectMake(0,0, self.view.frame.size.width,self.view.frame.size.height)];
[_m_scsetContentSize:CGSizeMake(self.view.frame.size.width*4,self.view.frame.size.height)];
for (int i=0; i<4; i++)
{
UIView *uv = [[UIViewalloc]init];
uv.frame =CGRectMake(self.view.bounds.size.width*i,0 , self.view.bounds.size.width,self.view.bounds.size.height) ;
uv.backgroundColor = [UIColorcolorWithRed:i*0.1+0.5green:i*0.1+0.7blue:i*0.1+0.1alpha:1];
UILabel *lab = [[UILabelalloc]init];
lab.frame =CGRectMake(100,100, 200, 50);
lab.backgroundColor = [UIColorclearColor];
lab.text = [@"welcome"stringByAppendingFormat:@"%d",i+1 ];
lab.textColor=[UIColorblackColor];
[uvaddSubview:lab];
[_m_scaddSubview:uv];
}
_m_sc.showsHorizontalScrollIndicator =NO; //是否显示水平滚动条
_m_sc.showsVerticalScrollIndicator =NO;//是否垂直水平滚动条
_m_sc.pagingEnabled =YES; //是否翻页
_m_sc.scrollEnabled =YES;
}
return _m_sc;
}
-(UIPageControl *)m_pageC
{
if (!_m_pageC)
{
_m_pageC = [[UIPageControlalloc]initWithFrame:CGRectMake(60,400,200 ,30)];
_m_pageC.backgroundColor = [UIColorclearColor];
_m_pageC.currentPageIndicatorTintColor = [UIColorredColor];
_m_pageC.pageIndicatorTintColor = [UIColorblackColor];
_m_pageC.numberOfPages =4;
}
return_m_pageC;
}
#pragma mark
#pragma mark UIScrollViewDelegate method
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
int size = self.view.frame.size.width;
int page = self.m_sc.contentOffset.x/size;
self.m_pageC.currentPage = page;
}
@end