Анимировать несколько кнопок UIB - PullRequest
0 голосов
/ 10 октября 2010

Привет, я новичок в iOS и у меня есть вопрос.

Я хочу изменить расположение нескольких кнопок при изменении ориентации, поэтому у меня есть этот код для их создания:

NSArray *buttonImages = [[NSArray alloc] initWithObjects:@"button_1.png",@"button_2.png",
    @"button_3.png", @"button_4.png", nil];




 int xcord = 0;
 //int ycord = 0;

 UIInterfaceOrientation destOrientation = self.interfaceOrientation;

 if (destOrientation == UIInterfaceOrientationPortrait || destOrientation == UIInterfaceOrientationPortraitUpsideDown) {

  screenWidth = 768;
 } else {

  screenWidth = 1024;
 }


 int buttonWidth = 57;
 int buttonHeight = 86;
 int screenHorizontalDivisions = screenWidth / 5;

 for (int i=0; i<4; i++) {


  int buttonStartingOffset = screenHorizontalDivisions - buttonWidth / 2;

   btn = [[DashButton alloc] initWithFrame:CGRectMake(buttonStartingOffset + xcord, 40, buttonWidth,buttonHeight) andImage:[buttonImages objectAtIndex:i] andTitle:@"Test"];
  btn.tag = i+1;
  [springboardScrollView addSubview:btn];
  //[btn release];

  xcord = xcord + screenHorizontalDivisions;

 }

икод для их перестановки:

- (void)animate: (id)sender {


 UIButton *button = (UIButton *)sender;

 UIInterfaceOrientation destOrientation = self.interfaceOrientation;

 if (destOrientation == UIInterfaceOrientationPortrait || destOrientation == UIInterfaceOrientationPortraitUpsideDown) {

  screenWidth = 768;
 } else {

  screenWidth = 1024;
 }

 int xcord = 0;
 int buttonWidth = 57;
 int buttonHeight = 86;
 int screenHorizontalDivisions = screenWidth / 5; //find the divisions
 int buttonStartingOffset = screenHorizontalDivisions - buttonWidth / 2; //center the button

 NSLog (@"%i", button.tag);

 switch (button.tag) {
  case 1:
   button.frame = CGRectMake(buttonStartingOffset, 40, buttonWidth,buttonHeight);
   break;
  case 2:
   button.frame = CGRectMake(buttonStartingOffset + screenHorizontalDivisions, 40, buttonWidth,buttonHeight);
   break;
  case 3:
   button.frame = CGRectMake(buttonStartingOffset + screenHorizontalDivisions * 2, 40, buttonWidth,buttonHeight);
   break;
  case 4:
   button.frame = CGRectMake(buttonStartingOffset + screenHorizontalDivisions * 3, 40, buttonWidth,buttonHeight);
   break;

 }

, тогда я звоню, когда меняется ориентация:

- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation: (UIInterfaceOrientation) fromInterfaceOrientation duration: (NSTimeInterval) duration {


 [self animate:btn];

Как я могу ссылаться на каждую кнопку по очереди?Код в анимации: всегда возвращайте button.tag = 4.

Пожалуйста, помогите !!

Спасибо, Билл.

1 Ответ

1 голос
/ 10 октября 2010

Вам нужно получить массив кнопок UIB со следующим кодом:

NSArray* buttons = [springboardScrollView subviews]

Это вернет все подпредставления в scrollView.Если у вас есть только кнопки UiButton, это будут все кнопки в представлении прокрутки.Если у вас есть другие типы представлений в представлении с прокруткой, вам нужно выполнить итерацию по массиву и проверить, является ли объект UiButton, что объясняется по следующей ссылке Тогда вы можете изменить кадр, изображение, положение ....

...