0

私はGMGridviewを使用したアプリで作業しています。cellforItems メソッドにボタンを追加しました。-

 (GMGridViewCell *)GMGridView:(GMGridView *)gridView cellForItemAtIndex:(NSInteger)index
{
    NSLog(@"Creating view indx %d", index);

    CGSize size = [self GMGridView:gridView sizeForItemsInInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation]];

    GMGridViewCell *cell = [gridView dequeueReusableCell];

    if (!cell) 
    {
        cell = [[GMGridViewCell alloc] init];
        cell.deleteButtonIcon = [UIImage imageNamed:@"close_x.png"];
        cell.deleteButtonOffset = CGPointMake(-15, -15);

    }

    [[cell.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];


     btn = [UIButton buttonWithType:UIButtonTypeCustom];
     [btn setTag:index];


    [btn setFrame:CGRectMake(0, 0,size.width, size.height)];
    NSLog(@"button frame is %@",btn);

    [[btn layer] setBorderColor:[UIColor redColor].CGColor];
    [[btn layer]setBorderWidth:2.0f];
    [btn addTarget:self action:@selector(SegmentChange:) forControlEvents:UIControlEventTouchUpInside];

    cell.contentView = btn;
    //int btntag=btn.tag;

return cell;

次に、メソッドを使用してすべてのボタンをフリップしましたが、機能しません。フリップボタンをクリックすると、グリッドビューのすべてのボタンがフリップする必要があります。これを行うにはどうすればよいですか、使用するフリップのコードはこちら、

for(ll=0;ll<[Image_array count];ll++) 
    {
       // [UIView setAnimationDelay:2.0];
        [UIView beginAnimations:@"BackButton" context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
        [UIView setAnimationDuration:12.0];

        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:btn cache:YES];
        [UIView setAnimationDelegate:self];
        [UIView commitAnimations];
        [btn setImage:[UIImage imageNamed:nil] forState:UIControlStateNormal];
        [arr_check replaceObjectAtIndex:ll withObject:@"uncheck"];

        front = NO;


    }
       [_gmGridView reloadData];
4

2 に答える 2

0

ループは に比べてFOR非常に高速UIViewAnimationです。そのため、ビューがアニメーション化されていても、アニメーション効果を見ることはできません。

NSTimerOr delegate メソッドを使用UIViewAnimationして、1 つのビュー フリップ イベントが完了したかどうかを判断できます。次に、デリゲート メソッド(of UIViewAnimation)から、別のビュー アニメーションを開始できます。

于 2012-08-14T12:38:05.807 に答える
0

forループからコードを削除し、cellForItemAtIndexpathで同じコードを使用し、セルを使用してボタンよりもフリップします

コードは次のとおりです。

        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:cell cache:YES];

        [UIView setAnimationDuration:0.7];
        [UIView setAnimationDelegate:self];
        [UIView commitAnimations];
于 2012-09-13T05:42:46.490 に答える