首页 > 代码库 > [objc]-ios 分页控制器实现
[objc]-ios 分页控制器实现
效果图 如下 上方的滑条 根据页面可以滑动
思路:
下方灰色的部分是一个scrollview 其中放置了2个view。
上方的绿色滑条是uilable控件。
绿色滑条下面是2个button。
实现:
在所有的controller外部套了一层NavigationController,所以会有UINavigationBar。
//首先viewController.h 新建控件 并且继承 <UIScrollViewDelegate>
@interface ViewController : BaseViewController<UIScrollViewDelegate> //scrollview @property (nonatomic,strong)UIScrollView * scrollView; //移动的滑条 @property(nonatomic,strong)UILabel * navSlideLable; //选择按钮 @property(nonatomic,strong)UIButton * view1Btn; @property(nonatomic,strong)UIButton * view2Btn; @end
//在viewController.m 文件中实现控件的懒加载。
#pragma mark Lazyout -(UIScrollView *)scrollView{ if (!_scrollView) { //距离头的的高度 CGFloat scrollViewHeight = 100; //scrollview的大小位置 _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, scrollViewHeight, SK_ScreenWidth,SK_ScreenHeight- scrollViewHeight - self.navigationController.navigationBar.frame.size.height -22)]; _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.pagingEnabled = YES; CGSize size = _scrollView.frame.size; //scrollview的宽度 = 页面的个数* 单个页面的宽度 size.width *=2; //2个 _scrollView.contentSize = CGSizeMake(size.width, 0); _scrollView.backgroundColor = [UIColor redColor]; _scrollView.delegate = self; //设置代理 } return _scrollView; } //移动的滑条 -(UILabel *)navSlideLable{ if (!_navSlideLable) { _navSlideLable = [[UILabel alloc] init]; _navSlideLable.backgroundColor = [UIColor colorWithRed:32/255.0 green:178/255.0 blue:170/255.0 alpha:1]; } return _navSlideLable; } //Button -(UIButton *)view1Btn{ if (!_view1Btn) { _view1Btn = [[UIButton alloc]init]; //给Btn一个target scrollview会根据tag 来移动位置 _view1Btn.tag =(NSInteger) (0 / (self.view.frame.size.width / 2)); [_view1Btn setFrame:CGRectMake(0, 0, SK_ScreenWidth/2, TOP_VIEW_ITEM_HEIGHT)]; [_view1Btn setTitle:@"view1" forState:UIControlStateNormal]; [_view1Btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; //给Btn添加相应方法 [_view1Btn addTarget:self action:@selector(switchview1Btn:) forControlEvents:UIControlEventTouchUpInside]; } return _view1Btn; } -(UIButton *)view2Btn{ if (!_view2Btn) { _view2Btn = [[UIButton alloc]init]; _view2Btn.tag =(NSInteger) (SK_ScreenWidth/2 / (self.view.frame.size.width / 2)); [_view2Btn setFrame:CGRectMake(SK_ScreenWidth/2, 0, SK_ScreenWidth/2, TOP_VIEW_ITEM_HEIGHT)]; [_view2Btn setTitle:view2 forState:UIControlStateNormal]; [_view2Btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [_view2Btn addTarget:self action:@selector(switchview2Btn:) forControlEvents:UIControlEventTouchUpInside]; } return _view2Btn; }
//viewDidLoad 添加控件到页面上
scrollview中的视图我另外新建了2个UIView的类 FirstView 和SecondView 方便再自定义视图
滑条和按钮的位置是可以自己修改的 我写的是在上方 也可以自己写到下方或者其他的地方改变一下位置就好啦
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; //添加移动滑条 [self.view addSubview: self.navSlideLable]; //移动滑条的初始位置 (应为只有2个按钮所以宽度直接是屏幕的一半 多个自己调节就好) [self.navSlideLable setFrame:CGRectMake(0,0, SK_ScreenWidth/2, TOP_VIEW_LINE_HEIGHT)]; //添加按钮 [self.view addSubview:self.view1Btn]; [self.view addSubview:self.view2Btn]; //添加scrollview 中的视图 //第一个页面的位置是 0 0 FirstView * firstView = [[FirstView alloc]initWithFrame:CGRectMake(0, 0, SK_ScreenWidth, self.scrollView.frame.size.height)]; //第二个页面的起始位置就是加上第一个页面的宽度 依次类推 SecondView * secondView = [[SecondView alloc]initWithFrame:CGRectMake(self.scrollView.frame.size.width, 0, SK_ScreenWidth, self.scrollView.frame.size.height)]; //添加scrollview 中的视图 [self.scrollView addSubview:firstView]; [self.scrollView addSubview:firstView]; //添加scrollview [self.view addSubview: self.scrollView]; }
//实现Button的响应方法
//这里点击后不需要改动滑条的位置,按钮一点击就会改动scrollview的位置,会自己响应scrollview的代理方法去改变滑条的位置
-(void)switchview1Btn:(UIButton *)button{ //点击Button 根据button的tag 来改变scrollview 滑动的位置 [self.scrollView setContentOffset:CGPointMake(button.tag * self.view.frame.size.width, 0) animated:YES]; } -(void)switchview2Btn:(UIButton *)button{ //点击Button 根据button的tag 来改变scrollview 滑动的位置 [self.scrollView setContentOffset:CGPointMake(button.tag * self.view.frame.size.width, 0) animated:YES]; }
//实现scrollview的代理方法移动视图的位置
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint offset = scrollView.contentOffset; //应为只有2个按钮和页面所以 处以2 3个就处以3 CGFloat x = offset.x / 2; if (x !=0 &&x < scrollView.frame.size.width) { //移动滑条的位置 CGRect frame = self.navSlideLable.frame; frame.origin.x = x; self.navSlideLable.frame = frame; } }
以上????
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ba2da2 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; min-height: 13.0px } span.s1 { } span.s2 { color: #000000 } span.s3 { color: #703daa }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #008400 } span.s1 { font: 11.0px Menlo } span.s2 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #008400 } span.s1 { font: 11.0px Menlo } span.s2 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa } span.s1 { color: #000000 } span.s2 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400 } span.s1 { }</style>
[objc]-ios 分页控制器实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。