子视图重叠的问题

时间:2015-06-09 13:02:54

标签: ios objective-c subview addsubview

我试图创建一个包含多个图像的自定义视图。我这样做是通过编程方式添加它们。问题是这些子视图相互重叠,我无法找到改变它的方法。我能看到的唯一解决方案就是以编程方式为每个新图像设置帧。如果有人能告诉我解决这个问题的最佳方法,我将不胜感激。

for (id image in self.images) {
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self.imageViews addObject:imageView];
    [self addSubview:imageView];
}

2 个答案:

答案 0 :(得分:3)

如果您想要customView UICollectionView UIScrollView,则需要subviews并在其中添加int xPosition = 0; int yPosition =0; for (id image in self.images) { if (xPosition>self.view.frame.size.width) { //give size to every imageView and every time in loop change the location UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xPosition, yPosition, 50, 50)]; imageView.image = image; yPosition = yPosition + 50; [self.view addSubView:imageView]; } else { UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xPosition, yPosition, 50, 50)]; imageView.image = image; xPosition = xPosition + 50; [self.view addSubView:imageView]; } } 。每次添加子视图更改框架位置时,它都可能是这样的:

var productviewmodel = (from a in dbo.ProductReviews 
where a.ProductID ==id
select new ProductViewModel
    {
         ReviewId=a.ReviewId, 
         ProductID=a.ProductID,
         ReviewTitle =a.ReviewTitle,
         ReviewMessage =a.ReviewMessage,
         Rating =a.Rating,
         CustomerName =a.CustomerName,
         ReviewStatus=a.ReviewStatus
    }).FirstOrDefault();

答案 1 :(得分:2)

不使用Interface Builder,您唯一真正的选择是更改框架或中心。

id

此方法可让您调整大小和移动,而更改中心可让您执行此操作,移动视图的中心。

imageView.frame = CGRectMake(x coord, y coord, width, height);

或者建议添加约束。