UIScrollView UIPageViewController UI_07

1、UIScorollView        是ios中提供的滑动控件,用来解决当内容区域大于scorollView可视区域时,可以通过滑动的方式查看整个内容区域,UIScorollView 的滑动控件的基类,后期药学的UITableView(表视图),内部实现的原理是修改视图的bounds
//1.创建对象
   
 UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(20,20, kScreenWidth - 20 * 2, kScreenHeight - 20 *2)];
   
 //2.配置属性
//    scrollView.backgroundColor = [UIColor redColor];
   
 //2.1 设置内容区域的大小
    scrollView.
contentSize = CGSizeMake(500, 1000);
   
 //2.2 修改内容区域的偏移量
   
 //x变大,往左偏移,y变大往上偏移 1

//    scrollView.contentOffset =  CGPointMake(140, 400);
   
 //2.3 是否显示滚动指示条
    scrollView.
showsHorizontalScrollIndicator = NO;//默认为YES
    scrollView.
showsVerticalScrollIndicator = NO;//默认为YES
   
 //2.4 修改滚动指示条的样式
//    scrollView.indicatorStyle =  UIScrollViewIndicatorStyleWhite;
   
 //2.5 设置scrollView 能否滚动
    scrollView.
scrollEnabled = YES;//默认为YES
   
 //2.6 设置方向锁,设置滑动时只能从一个方向滚动
    scrollView.
directionalLockEnabled = NO;//默认为NO
   
 //2.7 设置是否整屏滚动
    scrollView.pagingEnabled = YES;//默认为NO
UIScrollView <wbr>UIPageViewController <wbr>UI_07



    //2.8 设置当滑动到屏幕边缘的时候是否出现反弹效果
    scrollView.bounces = YES;//默认为YES
UIScrollView <wbr>UIPageViewController <wbr>UI_07

    //2.9 设置当内容区域等于或小于可视区域时,依然具有边界反弹效果
//水平方向
    scrollView.alwaysBounceHorizontal = YES;//默认为NO
//垂直方向
    scrollView.alwaysBounceVertical = YES;//默认为NO   
   
 //2.10 设置点击状态栏,scrollView 是否回到顶部,此时y轴的偏移量是0
    scrollView.scrollsToTop = YES;//默认为YES
UIScrollView <wbr>UIPageViewController <wbr>UI_07

    //2.11 scrollView 的代理属性
   
 //self指试图控制器对象
    scrollView.delegate = self;
    //2.12 设置scrollView的缩放比例
    scrollView.
minimumZoomScale  0.5;
    scrollView.maximumZoomScale = 3.0;
      UIScrollView <wbr>UIPageViewController <wbr>UI_07

    UIImage *image = [UIImage imageNamed: @"4.JPG"];
   
 UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
    imageView.
tag = 101;
    imageView.
frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
   
 //添加到父视图
    [scrollView
 addSubview:imageView];
    [
self.view addSubview:scrollView];
   
 //释放所有权
    [scrollView
 release];  
}
——————————————————————————-——————
scrollView 的代理属性的13个方法及用途
//触发时机:ScrollView 将要开始拖拽idea时候触发(此时手指刚刚触摸到scrollView的时候)
- (
void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
   
   
 NSLog(@"开始拖拽了没?");
}

//触发时机:ScrollView 将要结束拖拽的时候触发
- (
void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffsetNS_AVAILABLE_IOS(5_0){
   
 NSLog(@"拖拽结束了没?");
   
}

//触发时机:ScrollView 已经结束拖拽的时候触发
- (
void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
   
 NSLog(@"结束了没?好快啊!");
   
 //在此方法中能拿到contenOfSet的偏移量
}

//触发时机:将要减速的时候触发(此方法不一定触发,匀速不一定触发)
- (
void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
   
 NSLog(@"减速了么?");
}

//触发时机:已经结束减速的时候触发(此方法不一定触发,上面的减速方法不触发,这个结束减速的方法就不会触发)
- (
void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
   
 NSLog(@"加速完了吗?");
   
 //一般在这个方法中获取scrollView的偏移量,或者设置scrollView的偏移量
//    scrollView.contentOffset = CGPointZero;
//    [scrollView setContentOffset:CGPointZero animated:YES];
}

//触发时机:scrollView结束减速并且必须有动画效果才会触发(必须要有动画效果偶)
- (
void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
   
 NSLog(@"有动画吗");
}

//触发时机,返回缩放后的视图,但是只能返回scrollView(内容)上的子视图
- (
UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
   
 return [scrollView viewWithTag:101];
}

//触发时机:开始缩放的时候触发
- (
void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView*)view NS_AVAILABLE_IOS(3_2){
   
 NSLog(@"开始缩放了吗");
}
//触发时机:结束缩放的时候触发
- (
void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView*)view atScale:(CGFloat)scale{
   
 NSLog(@"结束缩放了吗");
}

//触发时机:点击状态栏,调用该方法,该方法能实现的前提是scrollToTop的属性是YES
- (
BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
   
 return YES;
}

//触发时机:scrollView 已经回到顶部了
- (
void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
}
 总结:scrollView的使用技巧
             使用scrollViewDidZoom: 实时修改自身视图的大小
             使用scrollViewDidEndDecelerating: 获取contentOfSet
==============================================================
LaunchViewController.m
#import "LaunchViewController.h"
#import
 "PageViewController.h"

//图片个数
#define kImageCount 6
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight  [UIScreen mainScreen].bounds.size.height
@interface LaunchViewController ()<</span>UIScrollViewDelegate>
//定义属性方便使用
@property(nonatomic,retain)UIScrollView *scrollView;
@property(nonatomic,retain)UIPageControl *pageControl;
@end

@implementation LaunchViewController
- (
void)dealloc{
   
 _scrollView = nil;
   
 _pageControl = nil;
    [
super dealloc];
}


- (
void)viewDidLoad {
    [
super viewDidLoad];

       
 //再添加scrollView
    [
self layoutScrollView];
   
 //先添加pageControl
    [
self layoutPageControl];
   
}

//布局scrollView
- (
void)layoutScrollView{
   
 self.scrollView = [[UIScrollView alloc]initWithFrame:[UIScreenmainScreen].bounds];
   
 //设置内容页的大小
   
 self.scrollView.contentSize = CGSizeMake(kImageCount * kScreenWidth,kScreenHeight);
   
 //隐藏水平指示条
   
 self.scrollView.showsHorizontalScrollIndicator = NO;
   
 //整屏滑动
   
 self.scrollView.pagingEnabled = YES;
   
 //制定代理
   
 self.scrollView.delegate = self;
   
   
 //添加图片
   
 for (int i = 0; i <</span> kImageCount; i ++ ) {
       
 UIImageView *imageView = [[UIImageViewalloc]initWithFrame:CGRectMake(i * kScreenWidth, 0, kScreenWidth,kScreenHeight)];
       
 //图片名
       
 NSString *name = [NSString stringWithFormat:@"v6_guide_%d",i + 1];
       
 //初始化UIImage 对象
       
 UIImage *image = [UIImage imageNamed:name];
        imageView.
image = image;
        [
self.scrollView addSubview:imageView];
       
        [imageView
 release];
       
       
 //添加手势
       
 if (kImageCount - 1  == i) {
           
 UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc]initWithTarget:self action:@selector(handleTap:  )];
            [imageView addGestureRecognizer:tap];
            [tap release];
            //打开用户交互
            imageView.userInteractionEnabled = YES;        
        }
    }

   
 self.scrollView.backgroundColor = [UIColor yellowColor];
    [
self.view addSubview:self.scrollView];
    [
self.scrollView release];
}


PageViewController.m
#pragma mark pageControl的实现
- (void)layoutPageControl{
   
 _pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0,kScreenHeight - 60, kScreenWidth, 60)];
   
 _pageControl.numberOfPages = kImageCount;
   
 //配置点的颜色
   
 _pageControl.currentPageIndicatorTintColor = [UIColor redColor];
   
 //配置其他点的颜色
    _pageControl.pageIndicatorTintColor = [UIColor greenColor];
    //给pageControl 关联事件
    [_pageControl addTarget:self action:@selector(handlePage : )forControlEvents:(UIControlEventValueChanged)];
  
    [self.view addSubview:_pageControl];
    [_pageControl release];
}
#pragma mark  是轻拍手势的实现
- (void)handleTap : (UITapGestureRecognizer *)tap{
   
 NSLog(@"轻拍了嘛?");
   
 //是一个单例,可以实现数据持久化,当用户点击到最后一张图片时,引导图启动结束,此时在用户偏好中做一个标记,并把这个标记存储起来
   
 NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
   
    [user
 setBool:YES forKey:@"daociyiyou"];
   
 //赋值之后立即同步,作用是将事件标记的值存储起来
    [user synchronize];

    //实现点击最后一张图片进入用户进入用户界面
   
 PageViewController *pageVC = [[PageViewController alloc]init];
   
 //更换当前的window 的根视图控制器,将pageVC设置为主界面
   
   
 //取出当前的应用程序对象
    [
UIApplication sharedApplication].keyWindow.rootViewController = pageVC;
   
    [pageVC
 release];
   
}

#pragma mark scrollView的实现
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
   
 //求出scrollView内容在x轴偏移量
   
 CGFloat x = _scrollView.contentOffset.x;
   
 //求出pageCrontrol对应的下标
   
 _pageControl.currentPage = x / kScreenWidth;
}

- (
void)handlePage : (UIPageControl *)page{
   
   
 NSLog(@"%ld",page.currentPage);
   
   
 //让_scrollView 跟pageControl 页数的改变而改变
    _scrollView.contentOffset = CGPointMake(page.currentPage *kScreenWidth, 0);
}
————————————————————————————————
AppDelegate.m
    //根据判断条件让运行程序启动引导界面
   
 //获取用户对象,用户对象中存储的是一些有用的偏好设置

   
 NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
    if ([user boolForKey:@"daociyiyou"] != NO) {
        //    //根视图控制器
        self.window.rootViewController = [PageViewController new];
    }else{
       
 //根视图
       
 self.window.rootViewController = [LaunchViewController new];
    }
   
 return YES;
}
最终效果:
UIScrollView <wbr>UIPageViewController <wbr>UI_07
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值