2010-08-04 71 views
1

我剛剛注意到,在UIScrollView內部有一個背景圖像以及其他一些UI元素,它們以不同的速度滾動。UIScrollView背景圖像滾動速度比內容快

我創建一個UIScrollView孩子在我的主視圖,添加了這個測試代碼:

-(void)viewDidLoad { 
[super viewDidLoad]; 

oRulerYear.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"bg.png"]]; 
//bigsize! 
[oRulerYear setContentSize:CGSizeMake(2400,100)]; 

CGFloat x = 0; 
CGFloat y = 0; 

CGRect rect = CGRectMake(x , y, 120.0f, 45.0f); 

//label 1 
UILabel *label = [[[UILabel alloc] initWithFrame:rect] autorelease]; 
[label setText:@"Foo"]; 
[oRulerYear addSubview:label]; 


//label 2 
x = 2000; 
y = 10; 
rect = CGRectMake(x , y, 120.0f, 45.0f); 
UILabel *label2 = [[[UILabel alloc] initWithFrame:rect] autorelease]; 
[label2 setText:@"Bar"]; 
[oRulerYear addSubview:label2]; 

} 

滾動的工作,但我看到滾動兩個標籤標籤的differen速度。因此它非常像1980年的PC遊戲,或者還原了視差滾動或者其被稱爲。背景似乎滾動比前景更快。

任何想法如何防止這種行爲?

+0

+1 - 我得到相同的行爲,我也希望看到它消失 – jtrim 2010-08-26 02:33:27

+0

我擁有相同的行爲問題。背景圖案(用UIColor&colorWithPatternImage製作)以幾乎兩倍的速度水平滾動,而以零速度垂直滾動。 – lambruscoAcido 2011-02-04 18:36:15

回答

1

您需要在分頁UIScrollView的子視圖上設置背景圖案,而不是在分頁UISCrollView本身上。

#define OUTERPADDING 160 
CGRect backgroundFrame = CGRectMake(-OUTERPADDING, 0, 
    pagingScrollView.contentSize.width + 2*OUTERPADDING, 
    pagingScrollView.contentSize.height); 
UIView * backgroundView = [[UIView alloc] initWithFrame:backgroundFrame]; 
backgroundView.backgroundColor = [UIColor colorWithPatternImage: 
     [UIImage imageNamed:@"walnut"]]; 
[pagingScrollView addSubview:backgroundView]; 

該視圖必須與內容大小一樣大,並且爲了獲得乾淨的結果甚至更多。 OUTERPADDING用於確保圖案在第一張和最後一頁之前在屏幕的一半處應用

+0

謝謝。這太簡單了,該死的! :d – thedanielhanke 2010-11-18 06:11:30