Как скопировать основной экран iBook в iOS? - PullRequest
1 голос
/ 15 мая 2011

Мне нужно создать главный экран iBook, чтобы пользователи могли выбирать книги из макета вида обложки.

Я думаю использовать вертикальный макет UIScrollView для размещения объектов UIImageView.Это хороший подход?

Еще один большой вопрос: когда пользователь удаляет книгу и объект UIImageView удаляется с экрана, как заставить оставшиеся объекты UIImageView реорганизовать и перемещать с анимацией?

Перерисовка UIScrollView с последним списком книг может быть приемлемой, однако не будет анимации, показывающей, как объекты UIImageview перемещаются и перемещаются?

Есть ли хорошая идея для решения проблем?

1 Ответ

1 голос
/ 15 мая 2011

У вас может быть UIScrollView с NSMutableArray с UIImageViews в нем, поэтому, когда вы удаляете / добавляете книгу, вы удаляете / добавляете ее из массива, а затем с помощью наблюдателя для изменений вы переставляете uiimagesview с анимацией как необходимо.

Пример:

-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
  if  (object == self && [keyPath isEqualToString:@"ArrayofBooks"]) {
     //Do animations here as needed
  }
}

-(id)init {
  //...Previous init
  ArrayofBooks = [[NSMutableArray alloc] init];
  [self addObserver:self forKeyPath:@"ArrayofBooks" options:0 context:NULL];
  //...other init needed
}

Это должно идти на вашем UIScrollView Что он делает, так это регистрирует изменяемый массив и устанавливает наблюдателя для изменений в нем, затем первый метод вызывается наблюдателем, и вы делаете свое дело.

EDIT: Важно !, когда вы добавляете / удаляете объект, вы должны сделать это следующим образом, иначе наблюдатель не увидит его

[[self mutableArrayValueForKey:@"ArrayofBooks"] addObject:newBook];

[[self mutableArrayValueForKey:@"ArrayofBooks"] removeObject:newBook];
...