2011-10-24 88 views
6

我有一個水平 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]; 

所以了滾動荷載成功,我能夠把它的滾動左右與我的手指 - 但它不會像我希望的那樣「自動滾動」。

  • 我試圖調用scrollRectToVisible前後添加 scrollview作爲子視圖 - 沒有工作。
  • 思想也許這應該 中的loadView發生,而不是在viewDidLoad中?但如果是這樣,怎麼樣?

任何想法?

回答

5

一對夫婦的方式做到這一點:

  1. 使用scrollRectToVisible:animated:的零X值,然後largeish積極的一個,然後將其設置回你的中間點。您可以在將滾動視圖添加爲子視圖後調用方法(可能之前也可以,但最好是安全的)。你需要計算什麼是X的值屏幕外使用contentSize左側和知識有關的滾動視圖內的各種元素是如何廣泛的。
  2. 既然你只是做一個快速的動畫,並給用戶控制,這才能真正成爲一個快速和骯髒的動畫,所以你可以使用setContentOffset:animated:強制滾動視圖的內容相對移動到當前視圖位置。向左移動元素(X值爲正值),然後左移兩次(右X值),然後將偏移量設置爲零。

你不應該把它們放在viewDidLoadloadView;把它們放在viewDidAppear之後,這是你的scrollview實際上在屏幕上繪製之後。你只關心動畫,當用戶可以看到它們!

+0

你的意思是這樣? CGRect frame = CGRectMake(800,0,800,150); [photosScroll scrollRectToVisible:frame animated:YES]; frame = CGRectMake(0,0,800,150); [photosScroll scrollRectToVisible:frame animated:YES];原因是沒有工作...... – sirab333

+0

對於#1,是的,但你不需要讓'frame'滾動到整個視圖的大小。如果你喜歡,你可以做'CGRectMake(800,0,1,1)',然後'CGRectMake(0,0,1,1)'。從800個像素滾動區域1600個像素到視圖中,可滾動到'(1599,0,1,1)',然後從0至800的區域向後滾動到視圖,可以滾動到'(0 ,0,1,1)'。 – darvids0n

+0

哦確定讓我在viewDidAppear試試這個... – sirab333

相關問題