zoukankan      html  css  js  c++  java
  • iOS中scrollview自动滚动的实现

    http://bbs.csdn.net/topics/390347330

    原问题是,我要展现给用户的内容放在scrollview中,让内容从上到底自动滚动,我最开始用的是DDAutoscrollview,但是无法实现。

    一种解决方案见下边,更多解决方案见:http://ask.csdn.net/questions/374

    .h文件

    Objective C code
     
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
     @interface Interface1 : UIViewController {
     
        IBOutlet UIScrollView *scroller;
        IBOutlet UILabel *warnung;
     
    }
     
     
    @property (nonatomicretainIBOutlet UIScrollView* scrollView;


    .m文件

    Objective C code
     
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        CGPoint bottomOffset = CGPointMake(self.scrollView.contentOffset.x, self.scrollView.contentSize.height - self.scrollView.bounds.size.height);
        [self.scrollView setContentOffset:bottomOffset animated:NO];
     
        CGPoint newOffset = self.scrollView.contentOffset;
        newOffset.y = 0;
        [self.scrollView setContentOffset:newOffset animated:YES];
    }
     
    - (void)viewDidLoad
    {
     
        [scroller setScrollEnabled:YES];
        [scroller setContentSize:CGSizeMake(320, 420)];
     
            [super viewDidLoad];
    }



    使用setContentOffset:animated:

    Objective C code
    ?
    1
    2
    3
    4
    UIScrollView *scrollView = ...;
    CGPoint newOffset = scrollView.contentOffset;
    newOffset.y = 0;
    [scrollView setContentOffset:newOffset animated:YES];




    如果需要开场动画的效果,在scrollView的viewcontroller实现

    Objective C code
     
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    - (void)viewDidLoad
    {
        [super viewDidLoad];
     
        // ...
     
        CGPoint bottomOffset = CGPointMake(self.scrollView.contentOffset.x, self.scrollView.contentSize.height - self.scrollView.bounds.size.height);
        [self.scrollView setContentOffset:bottomOffset animated:NO];
    }
    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
     
        CGPoint newOffset = self.scrollView.contentOffset;
        newOffset.y = 0;
        [self.scrollView setContentOffset:newOffset animated:YES];
    }




    移动的慢点,用timer实现:

    Objective C code
     
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    - (void)viewDidLoad
    {
        [super viewDidLoad];
     
        // ...
     
        CGPoint bottomOffset = CGPointMake(self.scrollView.contentOffset.x, self.scrollView.contentSize.height - self.scrollView.bounds.size.height);
        [self.scrollView setContentOffset:bottomOffset animated:NO];
    }
     
     
    - (void)viewDidAppear:(BOOL)animated
    {    
        [super viewDidAppear:animated];
     
        CGPoint bottomOffset = CGPointMake(self.scrollView.contentOffset.x, self.scrollView.contentSize.height - self.scrollView.bounds.size.height);
     
        //设置延迟时间
        float scrollDurationInSeconds = 4.0;
     
        //计算timer间隔
     
     
        float totalScrollAmount = bottomOffset.y;
        float timerInterval = scrollDurationInSeconds / totalScrollAmount;
     
        [NSTimer scheduledTimerWithTimeInterval:timerInterval target:self selector:@selector(scrollScrollView:) userInfo:nil repeats:YES];
    }
     
    - (void)scrollScrollView:(NSTimer *)timer
    {
        CGPoint newScrollViewContentOffset = self.scrollView.contentOffset;
     
        //向上移动 1px
        newScrollViewContentOffset.y -= 1;
     
     
        newScrollViewContentOffset.y = MAX(0, newScrollViewContentOffset.y);
     
        //如果到顶了,timer中止
        if (newScrollViewContentOffset.y == 0) {
            [timer invalidate];
        }
     
        //最后设置scollView's contentOffset
        self.scrollView.contentOffset = newScrollViewContentOffset;
    }
  • 相关阅读:
    关于MSSQL导入导出时主键与约束丢失的问题解决
    逐层循环删除
    HttpContext.Current.User.Identity.IsAuthenticated
    如何给网站地址栏前增添图标
    站内搜索引擎
    一分钟加入google站内搜索代码
    【转】google谷歌百度收录网站的技巧方法,如何让百度收录?
    开启Microsoft SQL Management时,如果出现"未能加载包
    Zookeeper数据与存储
    前端学HTTP之实体和编码
  • 原文地址:https://www.cnblogs.com/geek6/p/4044757.html
Copyright © 2011-2022 走看看