center.x и center.y с массивом uiimageviews?

#iphone #objective-c #ios

#iPhone #objective-c #iOS

Вопрос:

Итак, я создал NSMutableArray UIImageView что-то вроде этого:

 NSMutableArray* imageViewArray = [[NSMutableArray alloc] init];
for(int i = 0; i < 15; i  ){
    UIImageView* imageView = [self animationInit:imageArray xPos:0 yPos:480 wFrame:32
                                                      hFrame:32 duration:0.5 repeat:0];
    [imageViewArray addObject:imageView];
    [imageView release];
    imageView = nil;
    [self.view addSubview:[imageViewArray objectAtIndex:i]];
}
  

Метод «animationInit» — это метод, который я создал для инициализации UIImageView. Его реализация такова:

 -(UIImageView*)animationInit:(NSArray*)imageArray xPos:(float)x yPos:(float)y wFrame:
                    (float)w hFrame:(float)h duration:(float)duration repeat:(float)count {
     UIImageView* imageAnimation = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, w, h)];
     imageAnimation.animationImages = imageArray;
     imageAnimation.animationDuration = duration;
     imageAnimation.animationRepeatCount = count;

     return imageAnimation;
 }
  

Я могу установить центр каждого UIImageView в массиве, используя вот так:

 [imageViewArray objectAtIndex:Index] setCenter:CGPointMake(x, y)];
  

Теперь я хотел бы иметь возможность изменять точки x и y , как при обычном UIImageView . Пример: UIImageView.center = CGPointMake(UIImageView.center.x 5, UIImageView.center.y 5);

Проблема здесь в том, что я понятия не имею, как получить доступ к «UIImageView.center.x / y» в массиве UIImageViews . Есть ли какой-нибудь способ получить доступ к «center.x / y», как я смог с помощью «setCenter:» или мне было бы лучше создать кучу CGPoints для хранения x и y UIImageViews в массиве?

Когда я пытаюсь [imageViewArray objectAtInded:Index].center.x , я получаю следующую ошибку.

Запрос на член «center» в чем-то, что не является структурой или объединением

Есть ли решение или обходной путь?

Комментарии:

1. Вы можете перебирать представления изображений в массиве и изменять их свойство center. В чем проблема, с которой вы столкнулись?

2. извините, я думаю, я не очень хорошо объясняю вещи, что я хочу сделать, это что-то вроде этого: [[imageViewArray objectAtIndex:Index] setCenter:CGPointMake([imageViewArray objectAtIndex:Index].x 5, [imageViewArray objectAtIndex:Index].y 5])]; но, очевидно, этоневозможно так, как я это написал. теперь это имеет больше смысла?

3. Вы можете сделать это так? Почему вы говорите, что это невозможно?

4. я не могу поверить, что я этого не уловил. я просто ответил на свой собственный вопрос, не осознавая этого. я полагаю, поскольку я использовал «setCenter», мне нужно было бы получить доступ к точкам x и y одинаково. итак, я искал решение, похожее на синтаксис [[imageViewArray objectAtIndex:Index] setCenter:], который я не подумал попробовать «.» синтаксис. я чувствую себя таким дураком. в любом случае, спасибо, что нашли время, чтобы просмотреть мой вопрос и внести свой вклад.

5. хорошо, я был неправ / прав, но просто поймите, в чем проблема с использованием [imageViewArray objectAtIndex:Index].center.x. когда я пытаюсь использовать его таким образом, я получаю следующую ошибку: «запрос на член «center» в чем-то, что не является структурой или объединением». вот почему я искал альтернативу. извините за путаницу, я также отредактирую свой первоначальный вопрос.

Ответ №1:

Чтобы получить доступ к x y значениям и массива UIImageViews , вы должны использовать следующее.

 [imageViewArray objectAtIndex:Index] center].x
  

При этом я смог использовать следующее.

 UIImageView.center = CGPointMake(UIImageView.center.x   5, UIImageView.center.y   5);
  

Вот так:

 [[imageViewArray objectAtIndex:Index] setCenter:CGPointMake([imageViewArray objectAtIndex:Index] center].x   5, [imageViewArray objectAtIndex:Index] center].y   5)];
  

Еще раз извините за беспорядок и любую путаницу, которую я мог вызвать. Я чертовски перепутал себя с этим.

(Я нашел решение и подумал, что лучше поделиться им на случай, если кто-нибудь еще столкнется с такой же проблемой.)