我有一个水平 UIScrollview设置(意思是它不是向上和向下滚动但只向左滚动的那个)并且在应用程序启动时,我希望此滚动视图自动向左滚动然后是正确的 - 有点“展示”它滚动的能力 - 然后最后停止,然后让用户接管并用手指手动控制滚动。 一切正常 - 除了这个有载的左右演示滚动。
我没有使用Interface Builder,我正在用代码做任何事情:
//(this is in viewDidLoad:)
// Create the scrollView:
UIScrollView *photosScroll = [[UIScrollView alloc] initWithFrame: CGRectMake(0, 0, 320, 200)];
[photosScroll setContentSize: CGSizeMake(1240, 200)];
// Add it as a subview to the mainView
[mainView addSubview:photosScroll];
// Set the photoScroll's delegate:
photosScroll.delegate = self;
// Create a frame to which to scroll:
CGRect frame = CGRectMake(10, 10, 80, 150);
// Scroll to that frame:
[photosScroll scrollRectToVisible: frame animated:YES];
所以scrollView加载成功,我可以用我的手指左右滚动它 - 但它不会像我希望的那样“自动滚动”。
有什么想法吗?
答案 0 :(得分:5)
有两种方法可以做到这一点:
scrollRectToVisible:animated:
获取零X值,然后使用大的正值,然后将其设置回中间点。滚动视图作为子视图添加后可以调用该方法(可能之前也是如此,但最好是安全的)。您需要使用contentSize
计算左边屏幕的X值,并了解滚动视图中各种元素的宽度。setContentOffset:animated:
强制滚动视图的内容相对移动到你当前的观点位置。将元素向右移动以进行左滚动(正X值),然后向左移动两次以进行右滚动(负X值),然后将偏移设置回零。您不应将其中任何一项放入viewDidLoad
或loadView
;将它们放在viewDidAppear
中,这是在您的滚动视图实际绘制在屏幕上之后。您只关心用户可以看到的动画!