0

ストーリーボードを使用して UITableViewController の一番上 (ナビゲーション バーのすぐ下) に UIScrollView があります。UIScrollView のデフォルト サイズは 320x50 です。ユーザーが scrollView を少なくとも 1 秒間保持すると、アニメーションで追加の詳細を表示するために、UIScrollView を 2 倍 (320x100) にする必要があります。そのすぐ下の UITableView は、可能であればそれと一緒にアニメーション化し、50 下に移動する必要があります。

UIScrollView が大きい設定のときに少なくとも 1 秒間保持すると、逆のアニメーションになり、UIScrollView は元のサイズに戻ります。

どうすればいいですか?よろしくお願いします!これが私がこれまでに持っているものです:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.featureScrollExpanded = NO;
    UILongPressGestureRecognizer* featureHold = [[UILongPressGestureRecognizer alloc] initWithTarget:self  action:@selector (longHold:)];

    [featureHold setDelaysTouchesBegan : YES];
    featureHold.minimumPressDuration = 0.6;
    featureHold.numberOfTouchesRequired = 1;
    [self.featureScrollView addGestureRecognizer:featureHold];
    [featureHold release];
}

- (void)longHold:(UIGestureRecognizer*)sender {
    if (self.featureScrollExpanded==NO) {
        self.featureScrollExpanded=YES;
        //make it bigger

    }
    else {
        self.featureScrollExpanded=NO;
        //make it smaller

    }
}
4

1 に答える 1

1

アニメーションを実行する:

CGRect frame = yourScrollView.frame;
frame.size.height += 50;
[UIView animateWithDuration:0.6
                     animations:^{
                         yourScrollView.frame = frame;
                     } completion:^(BOOL finished) {
                            //do your other animation here if you want to 
                            //or do them both together and lose this block
                     }
     ];

または、概要をもう少し知りたい場合は、次のようにします。

CGRect frame = yourScrollView.frame;
frame.size.height += 50;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.6];

[self.yourScrollView setFrame:frame];

[UIView commitAnimations];
于 2012-12-20T03:15:32.057 に答える