我刚注意到,在UIScrollView中有一个backgroudn图像以及其他一些UI元素,它们以不同的速度滚动。
我在主视图中创建了一个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];
}
滚动DOES工作,但我看到两个标签标签上的滚动速度不同。 所以它非常像一个1980年的PC游戏,或者恢复视差滚动或者它被称为。背景似乎比前景滚动得快。
任何想法如何防止这种行为?
答案 0 :(得分: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用于确保在第一页和最后一页之前将图案应用于屏幕的一半