iOS入门之page平铺导航,scrollerview滚动计算和pager的切换

scrollview滚动计算和UIpagerControl可以做出类似于android的引导页效果,


scrollview可以水平滚动,也可以垂直滚动,很方便


记得实现协议:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIScrollViewDelegate>


@end

主要的代码和注释如下:


#import "ViewController.h"

@interface ViewController ()
@property (strong,nonatomic) UIView *page1;
@property (strong,nonatomic) UIView *page2;
@property (strong,nonatomic) UIView *page3;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollerView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
- (IBAction)changePage:(id)sender;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    CGFloat scrollViewHeight = self.scrollerView.frame.size.height;
    CGFloat scrollViewWidth = self.view.frame.size.width;
    
    //滚动的方向,滚动的距离总的是三个父控件的宽度和一个自己的高度,即为只有横向的滚动,纵向不滚动
    self.scrollerView.contentSize = CGSizeMake(scrollViewWidth * 3,
                                               scrollViewHeight);
    /*self.view.frame.size.height- self.pageControl.frame.size.height - self.tabBarController.view.frame.size.height*/
    
    self.scrollerView.frame = self.view.frame;
    
    UIStoryboard *mainBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    
    UIViewController *page1Controller = [mainBoard instantiateViewControllerWithIdentifier:@"page1"];
    self.page1 = page1Controller.view;
    self.page1.frame = CGRectMake(0.0f, 0.0f, scrollViewWidth, scrollViewHeight);
    
    UIViewController *page2Controller = [mainBoard instantiateViewControllerWithIdentifier:@"page2"];
    self.page2 = page2Controller.view;
    self.page2.frame = CGRectMake(scrollViewWidth, 0.0f, scrollViewWidth, scrollViewHeight);
    
    UIViewController *page3Controller = [mainBoard instantiateViewControllerWithIdentifier:@"page3"];
    self.page3 = page3Controller.view;
    self.page3.frame = CGRectMake(2 * scrollViewWidth, 0.0f, scrollViewWidth, scrollViewHeight);
    
    self.scrollerView.delegate = self;
    
    //添加子view
    [self.scrollerView addSubview:self.page1];
    [self.scrollerView addSubview:self.page2];
    [self.scrollerView addSubview:self.page3];
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)changePage:(id)sender {
    [UIView animateWithDuration:0.3f animations:^{
        NSInteger whichPage = self.pageControl.currentPage;
        self.scrollerView.contentOffset = CGPointMake(self.view.frame.size.width*whichPage, 0.0f);
    }];
}

//scrollview滚动事件
-(void)scrollViewDidScroll:(UIScrollView *)aScrollView{
    CGPoint offset = aScrollView.contentOffset;
    self.pageControl.currentPage = offset.x/320.0f;
}


@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值