2

UIViewのサイズを右側から左側(反対側)に変更したいと思います。今、私は次のようなrectでビューを持っています:CGRectMake(100.f, 0.f, 100.f, 100.f);

[UIView animateWithDuration:0.5 animations:^{
  view.frame = CGRectMake(0.f, 0.f, 200.f, 100.f);
}];

問題は、アニメーションが良くないということです。右に跳ね返り(大きくなり)、0.0,0.0の位置に移動します。

左から右にサイズ変更するときと同じ効果を実現したいと思います。

編集:コード

- (void)resizeSearchBar:(int)type
{
    //resize - bigger
    if (type == 1) {
        [UIView animateWithDuration:1.0 animations:^{
            self.searchBar.frame = CGRectMake(0.f, 0.f, 280.f, 44.f);
        }];
    }
    //resize - smaller
    else {
        [UIView animateWithDuration:1.0 animations:^{
            self.searchBar.frame = CGRectMake(95.f, 0.f, 185.f, 44.f);
        }];
    }
}

編集2

また、IBのビュープロパティを次のように変更しようとしました。 ここに画像の説明を入力してください

まだ運がない...

4

3 に答える 3

7

この回答からのヒントで動作するようになりました: UISearchBar のフレームまたは境界をアニメーション化できません

[searchBar layoutSubviews];トリックは、フレームを設定した後にアニメーション ブロックを呼び出すことです。

サンプルで作業する必要があるのは次のとおりです。

- (IBAction)resizeButtonTapped:(id)sender {
    //resize - bigger
    if (searchBar.frame.origin.x == 95) {
        [UIView animateWithDuration:1.0 animations:^{
            self.searchBar.frame = CGRectMake(0.f, 0.f, 280.f, 44.f);
            [searchBar layoutSubviews];
        }];
    }
    //resize - smaller
    else {
        [UIView animateWithDuration:1.0 animations:^{
            self.searchBar.frame = CGRectMake(95.f, 0.f, 185.f, 44.f);
            [searchBar layoutSubviews];
        }];
    }

}
于 2012-08-20T13:39:38.950 に答える
0

持続時間がはるかに短いのでバウンドします!!

期間を長くしてください..そして私はそれがどのようにアニメーション化するかをより明確にするだろうと思います

Kこれを試してみてください

[UIView animateWithDuration:1.0 
                  delay:0.0 
                options:UIViewAnimationCurveEaseInOut 
             animations:^ {

     self.searchBar.frame = CGRectMake(0.f, 0.f, 280.f, 44.f);
             } 
             completion:^(BOOL finished) {

             }];

オプションについてはこちらをチェック

于 2012-08-20T12:29:45.660 に答える
0

これは、以下のデモリンクを見るだけで役立つと思います...

https://github.com/ipup/PPRevealSideViewController?_tmc=UFw1P_Ai9brJd4WEpSlPbNrXBWOvsYZ6gNPi_derQik

私はこれがあなたを助けることを願っています.. :)

編集...

[UIView animateWithDuration:0.5
                          delay:4.0
                        options: UIViewAnimationOptionTransitionCrossDissolve
                     animations:nil
                     completion:^{
                         view.frame = CGRectMake(0.f, 0.f, 200.f, 100.f);}];

よくわかりませんが、これを試して、「UIViewAnimationOptionTransitionCrossDissolve」などの別のアニメーションも使用してください....これがお役に立てば幸いです....

于 2012-08-20T12:38:04.970 に答える