2012-03-17 2 views
0

Я пытаюсь добавить эффект перехода на мой слайд-шоу: вот мой кодДобавить эффект перехода в слайд-шоу

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
photos = [[NSMutableArray alloc] init]; 

NSXMLParser *photoParser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL 
URLWithString:@"http://localhost/index.xml"]]; 
[photoParser setDelegate:(id)self]; 
[photoParser parse]; 

currentImage = 0; 

NSURL *imageURL = [NSURL URLWithString:[photos objectAtIndex:0]]; 
NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; 
[imgView setImage:[UIImage imageWithData:imageData]]; 

timer = [NSTimer scheduledTimerWithTimeInterval: 0.5 
             target: self 
             selector: @selector(handleTimer:) 
             userInfo: nil 
             repeats: YES]; 
} 

- (void) handleTimer: (NSTimer *) timer { 
currentImage++; 
if (currentImage >= photos.count) 
    currentImage = 0; 

NSURL *imageURL = [NSURL URLWithString:[photos objectAtIndex:currentImage]]; 
NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; 
[imgView setImage:[UIImage imageWithData:imageData]]; 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
attributes:(NSDictionary *)attributeDict { 
if ([elementName isEqualToString:@"photo"]) { 
    [photos addObject:[attributeDict objectForKey:@"url"]]; 
} 
} 

Я думаю, что я должен использовать

[UIView transitionFromView:currentView toView:nextView duration:1.0 
options:UIViewAnimationOptionTransitionCrossDissolve completion:nil]; 

, но я не знаю, как для заполнения полей переходаFRomView: and toView:. У меня есть только одна точка зрения

Спасибо за вашу помощь

+0

Я не могу проверить это сейчас, но я буду, как только смогу, и я дам вам знать. Спасибо за помощь – Enzoses

ответ

0

Вы можете использовать метод transitionWithView:duration:options:animations:completion:, для которых documentation говорит:

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

Это пример того, как можно использовать этот метод:

- (void) handleTimer: (NSTimer *) timer { 
    currentImage++; 
    if (currentImage >= photos.count) currentImage = 0; 

    NSURL *imageURL = [NSURL URLWithString:[photos objectAtIndex:currentImage]]; 
    NSData *imageData = [NSData dataWithContentsOfURL:imageURL] 
    [UIView transitionWithView:containerView 
     duration:2 
     options:UIViewAnimationOptionTransitionFlipFromLeft 
     animations:^{ 
      [imgView removeFromSuperview]; 
      imgView = // create a new image view 
      [imgView setImage:[UIImage imageWithData:imageData]]; 
      [containerView addSubview:toView]; 
     } completion:NULL]; 
} 

Где containerView находится родительский вид imgView и, скорее всего, является self.view.

+0

Он работает только с заменой containerView на self.view, imgView = [imgView setImage: [UIImage imageWithData: imageData]]; с помощью [imgView setImage: [UIImage imageWithData: imageData]]; и [containerView addSubview: toView]; с [self.view addSubview: imgView]; Большой! Вы знаете, хо, чтобы добавить кнопки, чтобы вернуться, вперед и приостановить презентацию? Или я должен задать другой вопрос? – Enzoses

+0

@Enzoses - Где вы хотите добавить эти кнопки? И да, лучше спросить об этом в другом вопросе, чтобы вы могли добавить дополнительную информацию. – sch

+0

Я хотел бы показать элементы управления, чтобы пользователи могли решить пропустить фотографию или вернуться или приостановить ее. Я думаю, что они должны быть размещены в одном и том же представлении, или, может быть, я создаю «MainView» с помощью кнопок, а внутри него - slideshowView – Enzoses