Iphone 向具有附加子视图的scrollview添加子视图
我正在根据for循环中数组元素的数量将子视图添加到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
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;