我有一个启用了页面的滚动视图,我希望用UIViews
填充。我试过创建一个" XIB"文件并在for循环中从中加载,但这只在我的滚动视图中给了我一个UIView
。
int amount = garments.count;
[self.pageControl setNumberOfPages:amount];
for (int i = 0; i < amount; i++) {
DOVGarment *garment = garments[i];
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.size = self.scrollView.frame.size;
DOVGarmentDetailView *view = [DOVGarmentDetailView new];
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"detailView" owner:view options:nil];
view = [topLevelObjects objectAtIndex:0];
view.image.image = [UIImage imageNamed:garment.fileName];
view.labelID.text = garment.ID;
[self.scrollView addSubview:view];
}
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * amount, self.scrollView.frame.size.height);
任何人都知道为什么这不起作用?或者,如果这是可能的?
答案 0 :(得分:2)
您放置在xib文件中的每个视图对象只有一个实例。因此,您的for循环的每个运行周期都访问相同的UIView实例。 如果您需要在for循环的每个运行周期中再次分配和初始化视图,请填写您的scrollView,从而创建许多UIView实例。
我就是这样做的,它将UIViews水平放置在我的scrollView -
中for (int i = 0; i<numberOfViews; i++)
{
UIView*smallView = [[UIView alloc]initWithFrame:CGRectMake((i*scrollview.frame.size.width+heightOfYourView), 0, scrollview.frame.size.width, scrollview.bounds.size.height)];
[scrollview addSubview: smallView];
}
scrollview.contentSize = CGSizeMake(numberOfViews*scrollview.frame.size.width, scrollview.frame.size.height);
答案 1 :(得分:2)
您正在创建多个视图,但您没有更改框架,因此它们将全部直接放在彼此之上。
更新代码以相对于
之前创建的视图偏移每个视图