2

iOS アプリで画像をダブルタップしたときに Instagram が使用する「いいね」アニメーションを実装したいと考えています。これは非常に洗練された機能であり、私のアプリに少し趣を加えると思います。ダブルタップの前後の写真を掲載しました。ハートは約 2 秒でフェードインとフェードアウトします。私はそれを把握することはできません。お知らせ下さい!

前

後

4

3 に答える 3

0
#define LIKED 100 //change as per your requirement
#define UNLIKE 200 //change as per your requirement

- (void) likeUnlike:(UIGestureRecognizer *)sender
{
    [imageViewSub setHidden:NO];

    UIImageView *imageView = (UIImageView *)sender.view;

    if(imageView.tag==LIKED)
    {
        [imageViewSub setImage:[UIImage imageNamed:@"unlike.png"]];
        [imageView setTag:UNLIKE];
    }
    else
    {
        [imageViewSub setImage:[UIImage imageNamed:@"like.png"]];
        [imageView setTag:LIKED];
    }

    //here, your like/unlike update call to server for store selection.

    //set the frame exactly you want or
    //implement some other way to hide `imageViewSub` after like/unlike
    [imageViewSub setFrame:CGRectMake( 110, 180, 100, 100)];
    [UIView beginAnimations:@"anim" context:nil];
    [UIView setAnimationDuration:1.0];
    [imageViewSub setFrame:CGRectMake(200, 200, 0, 0)]; 
    [UIView commitAnimations];
}

//Add below code where you're added/showing your images. There's always two `UIImageView`s one is `main` and other one is `sub`.

[imageViewSub bringSubviewToFront:imageViewMain];

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] init];
[doubleTap setNumberOfTapsRequired:2];
[doubleTap addTarget:self action:@selector(likeUnlike:)];
[imageViewMain addGestureRecognizer:doubleTap];
[doubleTap release];

PSimageViewMainは最初にタグ fromUNLIKEDimageViewSub持ちunlike.png、and を非表示にする必要があります。

于 2012-09-11T06:11:12.680 に答える
0

アニメーションアプローチを使用したい場合は、フレームシーケンスを使用してこれを行うことができます。

トースト (Android の場合と同様) アプローチも完璧であり、そのために iOS 用の重複した質問の Growl/toast スタイル通知ライブラリをここで確認できます。

于 2012-09-11T05:32:05.070 に答える
0

私のプロジェクトのいくつかでは、MBProgressHUDを使用しています。標準の画像/プログレス サークル、またはカスタム画像を設定し、ラベルのフォントもカスタマイズできます。私はかなりそれが好きです。performBlockAfterDelay (このカテゴリを確認してください)と一緒に使用すると、多くの時間を節約でき、生活が楽になります。

于 2012-09-11T06:24:38.577 に答える