как добавить подпредставления в цикле 'for' - PullRequest
2 голосов
/ 08 февраля 2012

Я просто пытаюсь добавить 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];
}    

The Orange is the scrollView underneath

Ответы [ 3 ]

4 голосов
/ 08 февраля 2012

Попробуйте это:

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;
}    
0 голосов
/ 08 февраля 2012
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]; 
} 
0 голосов
/ 08 февраля 2012

вместо

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

должно быть

[self.scrollView setContentSize:CGSizeMake(width*array.count, self.scrollView.frame.size.height)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...