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;

}

时间: 2024-11-05 13:26:12

iOS中scrollview自动滚动的实现的相关文章

IOS中键盘自动隐藏

前言 很多时候当我们在一个文本框中输入信息后,按了确认或者返回键需要隐藏键盘,或者在其他空白区域点击屏幕后也需要隐藏屏幕. 这时肯定就需要让相应的控件响应Tap事件(点击事件),这样我们才能处理. 实现隐藏的两种方法 在IOS中有一个概念叫First Responder,意指第一响应者,也就是当前屏幕上,处于焦点状态的控件,它是第一响应者,我们在界面的触摸的各种手势都是由这个控件接收的.那么很好理解,当用户点击一个输入框之后,弹出输入键盘,此时这个文本输入框便是第一响应者,那现在要隐藏键盘,其实

ios 中scrollview的 bounce属性与view中的clipsTobounds属性

一:scrollview的 bounce属性 当scrollview滚动到边界时,再继续滚动会有个反弹的效果,scrollview里有bounce属性,当设置为yes时,可以反弹,设置为NO时不能反弹,请问,能不能使得它只有一个边界能反弹呢,这个作用可以用来实现在一个scrollview里添加tableview与scrollview可以连续滑动,也就是,当table滑动到底时scrollview下面的scrollview接着滑动 二:view中的clipsTobounds属性 iew2添加vie

iOS中ScrollView(滚屏,引导界面,和判段是否是第一次登陆)

#import "RootViewController.h" #import "SecondViewController.h" #define kScreenWidth [UIScreen mainScreen].bounds.size.width #define kScreenHeight [UIScreen mainScreen].bounds.size.height #define kImageCount 6 #define kImageName @"

ios中的自动释放池

自动释放池中是否有虑重功能 1 @autoreleasepool { 2 UIView *view = [UIView alloc] init] autorelease]; 3 [view autorelease]; 4 } 这样写在自动释放池的队列中是两个对象还是一个对象,就是说把view加到自动释放池的队列时,队列本身是否对内容进行了虑重 防止对象的重复添加,比较view里面在队列中了,再次调用autorelease时还有没有作用. 于是写了一个测试代码 1 - (BOOL)applicat

ios 中scrollview上面嵌套tableView,左右滑动出现数据多次刷新的问题

注意scrollView左右滑动时不要刷新数据,刚进来时一次性请求所有数据 红包纪录和房源信息可以左右滑动和点击,tableView可以上下滑动,图片部分个人信息只刷新一次. 界面布局如下

iOS 中有用的开源库

youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配置:https://github.com/spf13/spf13-vim ----------------Mac完整项目---------- 电台:https://github.com/myoula/sostart ----------------iOS完整项目---------------- 1,

解决Android中,禁止ScrollView内的控件改变之后自动滚动

问题: 最近在写一个程序界面,有一个scrollVIew,其中有一段内容是需要在线加载的. 当内容加载完成后,ScrollView中内容的长度会发生改变,这时ScrollView会自动下滚,如下图所示: 滚动的那一下体验特别不好,所以要防止这种情况.即不论Scrollview中内容如何,都要保持在最上. 解决办法: 先简单写一下我的xml文件的结构: [html] view plaincopy <ScrollView android:id="@+id/scrollView1" a

ios自动滚动图片功能源码

源码AdScrollerView,一个已经封装好的UIScrollView的子类,可以自动滚动图片以及对应的描述语,类似淘宝app首页的广告滚动效果.滚动图片数量不限,并且显示pageControl. 效果图: <ignore_js_op> 源码下载: http://code.662p.com/view/9763.html 使用方法: 导入demo中的AdScrollerView文件夹,并导入头文件: #import "AdScrollView.h" #import &qu

IOS开发UI篇之自动滚动图片

我们在做项目是有时候会遇到设置自动滚动图片,所以我自己也遇到过两次.觉得他是一个挺有意思东西,所以做了下总结 DEMO: .h #import <UIKit/UIKit.h> @interface ImagePlayView : UIView<UIScrollViewDelegate> @property (nonatomic, strong) UIScrollView * scroll; @property (nonatomic, strong) UIPageControl *