如何在“for”循环中添加子视图

Posted

技术标签:

【中文标题】如何在“for”循环中添加子视图【英文标题】:how to add subviews in a 'for' loop 【发布时间】:2012-02-07 21:10:13 【问题描述】:

我只是想为数组中的每个对象添加一个 UIView,而不在屏幕上显示超过 3 个,但视图并不相邻。每个视图之间有一个很大的间隙(一个视图宽度)。这就是我所拥有的;

int numberOfUsersOnScreen;

if (array.count < 3) 
    numberOfViewsOnScreen = array.count;
else
    numberOfUsersOnScreen = 3;


double width = (self.scrollView.frame.size.width/numberOfViewsOnScreen);
CGRect r = CGRectMake(0, 0, width, 1200);
[self.usersScrollView setContentSize:CGSizeMake(width*array.count, 0)];

for (int i = 0; i < users.count; i++)   
       r.origin.x = width * i;
       UIView * view = [[UIView alloc] initFrame:r];
       [self.scrollView addSubview:view];
    

【问题讨论】:

【参考方案1】:

试试这个:

int xPosition = 0;
for (int i = 0; i < users.count; i++)   
   UIView * view = [[UIView alloc] initFrame:CGRectMake(xPosition, 0, width, 1200)];
   [self.scrollView addSubview:view];
   xPosition += width;
    

【讨论】:

谢谢,但仍然没有...当我更改 r.origin.x = width * i;到 r.origin.x = 宽度 * i/2;它似乎可以工作,但后来在代码中,当我向其中一个新视图添加子视图时,它显示在左侧的一半。 尝试将视图上的 backgroundColor 设置为绿色,它会显示视图的真实宽度。您也可以使用 NSLog 显示每个视图的宽度和 xPosition 以确保数字正确。 我已经做到了,绿色横跨整个scrollView。我为每个视图设置的触摸事件也好像间隙是视图一样。不知道有没有用? 如果绿色跨越整个子视图,那么您的滚动视图子视图将按照您的意愿运行。没有间隙。我认为您的问题可能在您的视图的子视图中。仔细检查您添加到每个视图的橙色。 对不起,我已经解决了。视图之间的间隙不是空白的,我的自定义视图类没有正确显示。这是drawRect中的一个问题;。感谢您的帮助。【参考方案2】:

代替

[self.scrollView setContentSize:CGSizeMake(width*array.count, 0)];

应该是

[self.scrollView setContentSize:CGSizeMake(width*array.count, self.scrollView.frame.size.height)];

【讨论】:

【参考方案3】:
for (int i = 0; i < users.count; i++)   
   r.origin.x = width * i;
   UIView * view = [[UIView alloc] initFrame:r];
   [self.scrollView addSubview:view];
 

这样,视图对象也会出现内存泄漏

for (int i = 0; i < users.count; i++)   
   r.origin.x = width * i;
   UIView * view = [[UIView alloc] initFrame:r];
   [self.scrollView addSubview:view];
   [view release]; 
 

【讨论】:

我在 ios 5 中编写。这已使用 ARC 进行了清理。还是谢谢。

以上是关于如何在“for”循环中添加子视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中使用for循环将按钮添加到stackview?

如何通过 android 中的回收器视图运行 for 循环?

如何在for循环中切换单击按钮的类?

如何在Django视图中使用for循环返回每次迭代[关闭]

如何在R中使用for循环提取多个子字符串

如何在表格视图单元格中快速迭代for循环