利用scrollView实现拖动一段距离,显示下方更多详情

原创 2015年07月08日 10:09:02

#define SCREEN_WIDTH     [[UIScreen mainScreen] bounds].size.width

#define SCREEN_HEIGHT    [[UIScreen mainScreen] bounds].size.height

#import "ViewController.h"

@interface ViewController ()

{

    float lastContentOffsetY;

    UIImageView * tipImageView;

    UILabel * tipLabel;

}


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    //创建对象,设置代理,容量

    UIScrollView * backScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];

    backScrollView.delegate = self;

    backScrollView.contentSize = CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT*2);

    [self.view addSubview:backScrollView];

    //提示的view

    UIView * tipView = [[UIView alloc]initWithFrame:CGRectMake(0, SCREEN_HEIGHT - 50, SCREEN_WIDTH, 50)];

    tipView.backgroundColor = [UIColor grayColor];

    [backScrollView addSubview:tipView];

    //提示的文字

    tipLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 30)];

    tipLabel.text = @"向上拖动阅读更多";

    tipLabel.center = CGPointMake(tipView.center.x+100, 25);

    [tipView addSubview:tipLabel];

    //提示的箭头

    tipImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];

    tipImageView.center = CGPointMake(tipView.center.x-25, 25);

    tipImageView.image = [UIImage imageNamed:@"11.jpg"];

    [tipView addSubview:tipImageView];


}

#pragma mark--------------scrollView代理方法

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

    //获取刚刚开始点击的y偏移量  为了比较是向上还是向下拖动

    lastContentOffsetY = scrollView.contentOffset.y;

}

//一直调用这个方法,实时获取偏移量

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    if (lastContentOffsetY <= scrollView.contentOffset.y)

    {

      if (scrollView.contentOffset.y>50)

      {

          tipLabel.text = @"松手查看详情";

          [self makeTheAnimationWithLayer:tipImageView.layer withBOOl:TRUE];

      }else

      {

          tipLabel.text = @"向上拖动阅读更多";

          [self makeTheAnimationWithLayer:tipImageView.layer withBOOl:FALSE];

      }

    }

    else

    {

        //向下拖拽的情况

        if (SCREEN_HEIGHT - scrollView.contentOffset.y>50)

        {

            [self makeTheAnimationWithLayer:tipImageView.layer withBOOl:FALSE];

            tipLabel.text = @"松手查看详情";

        }else

        {

           tipLabel.text = @"下拉查看上方信息";

            [self makeTheAnimationWithLayer:tipImageView.layer withBOOl:TRUE];

        }

    }

    

}

//结束拖拽后的调用

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{


    if (lastContentOffsetY < scrollView.contentOffset.y)

    {

        //向上拖拽的情况

        if (scrollView.contentOffset.y>50)

        {

            [UIView animateWithDuration:0.4 animations:^{

                scrollView.contentOffset = CGPointMake(0, SCREEN_HEIGHT);

            } completion:^(BOOL finished) {

                //完成动画后,将tiplabel更改

                tipLabel.text = @"下拉查看上方信息";

            }];

        }else

        {

            [UIView animateWithDuration:0.2 animations:^{

                scrollView.contentOffset = CGPointMake(0, 0);

            } completion:^(BOOL finished) {

            }];

        }

    }

    else

    {

        //向下拖拽的情况

        if (SCREEN_HEIGHT - scrollView.contentOffset.y>50)

        {

            

            [UIView animateWithDuration:0.4 animations:^{

                scrollView.contentOffset = CGPointMake(0, 0);

            } completion:^(BOOL finished) {

               tipLabel.text = @"向上拖动阅读更多";

            }];

            

        }else

        {

            [UIView animateWithDuration:0.2 animations:^{

                scrollView.contentOffset = CGPointMake(0, SCREEN_HEIGHT);

            } completion:^(BOOL finished) {


            }];

        }

    }

  

}

#pragma mark----------做动画

//箭头翻转的动画

-(void)makeTheAnimationWithLayer:(CALayer *)layer withBOOl:(BOOL )rotate

{

    CABasicAnimation *anima=[CABasicAnimation animationWithKeyPath:@"transform"];

    //1.1设置动画执行时间

    anima.duration=1.0;

    //1.2修改属性,执行动画

    if (rotate == FALSE)

    {

        anima.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 0, 0, 1)];

    }else

    {

        anima.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0, 0, 1)];

    }

    //1.3设置动画执行完毕后不删除动画

    anima.removedOnCompletion=NO;

    //1.4设置保存动画的最新状态

    anima.fillMode=kCAFillModeForwards;

    //2.添加动画到layer

    [layer addAnimation:anima forKey:nil];

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


Android之scrollview底部继续拖动查看图文详情

Android之scrollview底部继续拖动查看图文详情。。
  • Android_Cll
  • Android_Cll
  • 2017年02月07日 13:21
  • 13457

仿淘宝的继续拖动显示详情页面

最近项目需求类似于淘宝中的继续拖动,显示详情页面,就是当activity滑动到底部时,会出来另一个webview,这其中可能会出现scrollview和webview冲突。 效果图如下: 在网上...
  • lzq520210
  • lzq520210
  • 2015年11月03日 17:43
  • 3468

android向上拖动查看图文详情控件

摘自:http://blog.csdn.net/qifengdeqingchen/article/details/51659735   一、淘宝商品详情页效果 先看一下淘宝详情页的效果 ...
  • aiguoguo000
  • aiguoguo000
  • 2016年10月22日 10:20
  • 1168

js实现类似淘宝继续拖动查看详情的弹簧效果

主要的思路是利用iscroll.js+css3实现该效果,首先在body放置两个box,每个box的宽高都是100%,给每个box初始化iscroll,检测每个box里面滑动区域的位置,当第一个box...
  • qq_29721837
  • qq_29721837
  • 2017年03月06日 10:29
  • 843

显示更多和收起

自定义隐藏字体View前言今天我需要做一个关于隐藏字体的View但是如何做呢?我觉得需要一步一步的进行分析需求当字体大于3行的时候就会隐藏超过3行的字体就会进行隐藏并且显示一个按钮——“显示全部”,如...
  • sinat_17314503
  • sinat_17314503
  • 2016年07月09日 18:01
  • 292

一个完整的scrollView循环展示封装

可用于tableview的headerview,展示广告或者动态图片之类的.
  • xgb742951920
  • xgb742951920
  • 2015年05月07日 17:05
  • 262

jquery实现下拉展示更多

其实原理很简单:先给父级设置一个固定高度(否则没法监听是否到达底部), 对父级滚动监听 判断是否到达底部,其公式: 父级距离顶部的距离===父级里面所有孩子的高度-父级自身的高度 做出请求或者其他,...
  • u013179804
  • u013179804
  • 2016年12月13日 12:13
  • 553

Android ScrollView自动滑动一段距离的问题解决

问题出现的原因是因为ScrollView中子布局的的焦点的变化导致ScrollView自动的滑动 。所以解决方法就是让ScrollView中的最外层子布局焦点固定。 ...
  • tndroid
  • tndroid
  • 2015年12月01日 17:38
  • 2972

iOS 查看详情 富文本

NSString * textStr = @"周杰伦(Jay Chou),1979年1月18日出生于台湾省新北市,华语男歌手、词曲创作人、演员、MV及电影导演、编剧及制作人。2000年发行首张个人专辑...
  • sinat_35135563
  • sinat_35135563
  • 2016年06月13日 11:49
  • 252

仿淘宝商品详情页,上拉查看更多详情demo(Activity和Fragment)。2种应用场景

仿淘宝商品详情页,上拉查看更多详情demo(Activity和Fragment)。2种应用场景
  • u014620028
  • u014620028
  • 2016年12月19日 10:52
  • 1218
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用scrollView实现拖动一段距离,显示下方更多详情
举报原因:
原因补充:

(最多只允许输入30个字)