Iphone 向具有附加子视图的scrollview添加子视图

Iphone 向具有附加子视图的scrollview添加子视图,iphone,ios,uiscrollview,frame,subview,Iphone,Ios,Uiscrollview,Frame,Subview,我正在根据for循环中数组元素的数量将子视图添加到scrollview中。容器视图中还有一个子视图。问题是,只有第一个容器视图包含添加的子视图,而新的容器视图不包含,但第三个容器视图也有。我检查了子视图的框架,但仍然没有显示工作 CGFloat contentOffset = 0.0f; //add tej views one by one to scrollview for (NSString *packageType in packageTypesArray) { CGRect

我正在根据for循环中数组元素的数量将子视图添加到scrollview中。容器视图中还有一个子视图。问题是,只有第一个容器视图包含添加的子视图,而新的容器视图不包含,但第三个容器视图也有。我检查了子视图的框架,但仍然没有显示工作

CGFloat contentOffset = 0.0f;
//add tej views one by one to scrollview

for (NSString *packageType in packageTypesArray) 
{

    CGRect lvPackageContainerFrame = CGRectMake(contentOffset, 0.0f,scrollView.frame.size.width,scrollView.frame.size.height);

    LVPackageContainer *lvPackageContainer = [[LVPackageContainer alloc] initWithFrame:lvPackageContainerFrame];

    NSLog(@"Frame %@",NSStringFromCGRect(lvPackageContainerFrame));
    lvPackageContainer.packageType = packageType;
    [packageContainersArray addObject:lvPackageContainer];

     UIImageView *backgroundImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 264, 314)];
     NSLog(@"BackgroundImage %@",backgroundImage);
     backgroundImage.backgroundColor = [UIColor redColor];
     [backgroundImage setImage:[UIImage imageNamed:@"shadowBackground.png"]];
     backgroundImage.center = lvPackageContainer.center;
     [lvPackageContainer addSubview:backgroundImage];


    [scrollView addSubview:lvPackageContainer];

    contentOffset += lvPackageContainerFrame.size.width;
    scrollView.contentSize = CGSizeMake(contentOffset, scrollView.frame.size.height);

}   
如果添加子视图,坐标系将从其父视图开始

在您的例子中,当您为第二个视图设置中心时,它将变成类似{480240}(假设iphone中的视图是全屏的) 因此,您可以看到的第三个子视图实际上是第2页的子视图

更新: 当获得视图的中心时,它实际上根据帧值进行计算:

center.x = (frame.origin.x + frame.size.width) / 2;
center.y = (frame.origin.y + frame.size.height) / 2;
因此,假设您的第二个视图是使用
CGRectMake(320,0320480)
,它的中心将是

center.x = (320 + 320) / 2;
center.y = (0 + 480) / 2;
因此,您的子视图将位于第二个视图的
{480240}
中心


如果相对于scrollview进行转换,子视图将位于
{(320+480),(0+240)}
,如果我删除backgroundImage.center=lvPackageContainer.center一行,您将看到它位于第三个视图,而不是第二个视图;视图已添加,但我需要设置精确的坐标以找到中心。中心有什么问题?是的,但我不知道当我尝试向其中一个视图添加视图时,容器视图的坐标是否正确(0,0)是相对于父级的,正是容器视图的原点。容器视图.center失败的原因仍然很神秘
center.x = (320 + 320) / 2;
center.y = (0 + 480) / 2;