原问题是,我要展现给用户的内容放在scrollview中,让内容从上到底自动滚动,我最开始用的是DDAutoscrollview,但是无法实现。
一种解决方案见下边,更多解决方案见:http://ask.youkuaiyun.com/questions/374
.h文件
- @interface Interface1 : UIViewController {
- IBOutlet UIScrollView *scroller;
- IBOutlet UILabel *warnung;
- }
- @property (nonatomic, retain) IBOutlet UIScrollView* scrollView;
.m文件
- - (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:
- UIScrollView *scrollView = ...;
- CGPoint newOffset = scrollView.contentOffset;
- newOffset.y = 0;
- [scrollView setContentOffset:newOffset animated:YES];
如果需要开场动画的效果,在scrollView的viewcontroller实现
- - (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实现:
- - (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;
- }
本文介绍如何通过使用setContentOffset:animated:方法在iOS应用中实现UIScrollView的自动滚动,包括开场动画效果和定时器实现缓慢滚动的技巧。
1810

被折叠的 条评论
为什么被折叠?



