0

我确定我在这里遗漏了一些非常简单的东西......

我第一次很好地遍历图像,索引重置并正确递增,但 UIView 不会刷新并保持数组中的最后一个图像显示。transitionFromView:自动交换子视图,对吧?我需要实现 completion: 选项吗?

我错过了什么?这是相关的代码:

    - (id)initWithFrame:(CGRect)frame
    {
        NSInteger maxSlides = 12;
        self = [super initWithFrame: frame];
        if (self) {
            //set up an array of images to be used for a flipbook    
            slides = [[NSMutableArray alloc] initWithCapacity: maxSlides]; 

            for(NSInteger i=0; i<maxSlides; ++i) {
               imageView = [[UIImageView alloc] initWithImage:                
               [UIImage imageNamed:[NSString stringWithFormat: @"muybridge%d.png", i]]];

               [slides addObject: imageView];
            } 

            index = 0; //default to first photo.

            [self addSubview: [slides objectAtIndex: index]];
         }
         return self;
     }

    - (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
    {    
         //output indices for debugging. (yes, they increment properly)
         NSLog(@"index = %d", index);
         NSLog(@"currentIndex = %d", currentIndex);
         NSLog(@"nextIndex = %d", nextIndex);

         if (nextIndex <= 10) {
           currentIndex = nextIndex;
         } else {
            currentIndex = 0;
         }    
         nextIndex = currentIndex + 1;

         //flipbook - tapping the image transitions to the next image in the array  
         [UIView transitionFromView: [slides objectAtIndex: currentIndex]
                    toView: [slides objectAtIndex: nextIndex]
                    duration: 0
                    options: UIViewAnimationOptionTransitionCurlUp
                    completion: NULL
          ];
     }
4

2 回答 2

0

你所缺少的是这个,来自 transitionFromView: toView:... 上的文档:

fromView 转换的起始视图。默认情况下,此视图作为过渡的一部分从其父视图中删除。

所以它在第一次通过时有效,但在您查看完所有子视图后,只有一个子视图,即最后一个子视图。查看 UIViewAnimationOptionShowHideTransitionViews 选项。

于 2012-04-28T05:17:10.747 回答
0

根据Apple参考UIView: transitionFromView: toView:...

此方法仅修改视图层次结构中的视图。它不会以任何方式修改应用程序的视图控制器。例如,如果您使用此方法更改视图控制器显示的根视图,则您有责任适当地更新视图控制器以处理更改。

也许尝试在之后立即调用该[yourView setNeedsDisplay]方法。

于 2012-04-28T00:11:33.003 回答