2012-03-29 72 views
0

我正在做一個很酷的CA3DTransform而UIScrollview滾動scrollViewDidScroll委託方法。當你用手指滾動時,它完美地工作,所以當手動滾動時,一切都是完美的。CATransform3D奇怪的UIScrollView contentOffset

但是,當我設置滾動型contentoffset編程,如:

[scrollView setContentOffSet:CGPointMake(0,460) animated:YES]; 

它仍然會調用委託方法scrollviewdidscroll,所以相同的動畫方法被調用,所以我仍然可以看到正確的動畫,但是,不知何故部分該視圖在動畫過程中和動畫之後都會丟失!我試圖設置layer.zPosition所有東西,它似乎沒有幫助。它應該沒問題,因爲手動滾動不會失去視圖的部分...不知怎的,以編程方式調用此方法是不同的,我不知道爲什麼!

+0

發佈您的CATransform3D代碼,您的透視圖或裁剪平面可能有些奇怪。或者,禁用3D透視圖並確認視圖仍能正確顯示。然後,您可以將3D代碼一塊一塊帶到您確定問題的位置。 – Sam 2012-04-06 15:33:05

+0

我確實禁用了3D,然後沒有問題,所以它絕對是3D的東西,但只有在以編程方式滾動時。 – 2012-06-27 11:34:01

回答

0

以這種方式發佈您的問題不是很清楚,考慮到使用委託scrollViewDidScroll,我可以手動或以編程方式打印代碼。

... 
UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 10, 320, 200)]; 
[sv setContentSize:CGSizeMake(640, 200)]; 
sv.delegate = self; 
[sv setContentOffset:CGPointMake(320, 0) animated:YES]; 
[self.view addSubview:sv]; 
... 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    NSLog(@"---%@---", NSStringFromCGPoint(scrollView.contentOffset)); 
} 

在這個簡單的例子中,你可以看到委託實際工作。 請原諒答案的簡單性,但您提出的唯一問題很難給您提供幫助。

0

我有一個類似的問題(在幻燈片中使用scrollview的上下文),但通過使用scrollRectToVisible:NO(沒有動畫沒有)解決它,並將其包裹在UIView動畫塊中,我也把我的動畫代碼。

+1

嗯有趣,今天可能會試試.. – 2012-06-27 11:34:48

相關問題