[英]How do you programmatically force a scroll using UIScrollView?
我有一個水平的 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加載成功,我可以用我的手指左右滾動它 - 但它不會像我希望的那樣“自動滾動”。
有任何想法嗎?
有兩種方法可以做到這一點:
scrollRectToVisible:animated:
對於零X值,然后是一個大的正值,然后將其設置回中間點。 滾動視圖作為子視圖添加后可以調用該方法(可能之前也是如此,但最好是安全的)。 您需要使用contentSize
計算左邊屏幕的X值,並了解滾動視圖中各種元素的寬度。 setContentOffset:animated:
強制滾動視圖的內容相對於你當前的視圖移動位置。 將元素向右移動以進行左滾動(正X值),然后向左移動兩次以進行右滾動(負X值),然后將偏移設置回零。 你不應該把這些中的任何一個放在viewDidLoad
或loadView
; 把它們放在viewDidAppear
,這是在你的滾動視圖實際繪制在屏幕上之后。 您只關心用戶可以看到的動畫!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.