子视图重叠问题
Issue with subviews overlapping
我正在尝试创建一个包含多个图像的自定义视图。我通过以编程方式添加它们来做到这一点。问题是那些子视图相互重叠,我找不到改变它的方法。我能看到的唯一解决方案是以编程方式为每个新图像设置框架。如果有人能告诉我解决此问题的最佳方法是什么,我将不胜感激。
for (id image in self.images) {
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.imageViews addObject:imageView];
[self addSubview:imageView];
}
如果不使用 Interface Builder,您唯一真正的选择是更改框架或中心。
imageView.frame = CGRectMake(x coord, y coord, width, height);
此方法可让您调整大小和移动,而更改中心可让您做到这一点,即移动视图的中心。
或
imageView.center = CGPointMake(x coord, y coord);
或按照建议添加约束。
如果你想让你的 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];
}
}
我正在尝试创建一个包含多个图像的自定义视图。我通过以编程方式添加它们来做到这一点。问题是那些子视图相互重叠,我找不到改变它的方法。我能看到的唯一解决方案是以编程方式为每个新图像设置框架。如果有人能告诉我解决此问题的最佳方法是什么,我将不胜感激。
for (id image in self.images) {
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.imageViews addObject:imageView];
[self addSubview:imageView];
}
如果不使用 Interface Builder,您唯一真正的选择是更改框架或中心。
imageView.frame = CGRectMake(x coord, y coord, width, height);
此方法可让您调整大小和移动,而更改中心可让您做到这一点,即移动视图的中心。
或
imageView.center = CGPointMake(x coord, y coord);
或按照建议添加约束。
如果你想让你的 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];
}
}