7

新しい公式 Twitter for iOS アプリは、上の写真のようにステータスバーを変更します。そのような機能を実装するにはどうすればよいですか?

画像ソース

4

1 に答える 1

14

回転アニメーションを使用してアプリで行う方法は次のとおりです。

-(void)showStatusBarMessage:(NSString *)message hideAfter:(NSTimeInterval)delay
{
    __block UIWindow *statusWindow = [[UIWindow alloc] initWithFrame:[UIApplication sharedApplication].statusBarFrame];
    statusWindow.windowLevel = UIWindowLevelStatusBar + 1;
    UILabel *label = [[UILabel alloc] initWithFrame:statusWindow.bounds];
    label.textAlignment = UITextAlignmentCenter;
    label.backgroundColor = [UIColor blackColor];
    label.textColor = [UIColor grayColor];
    label.font = [UIFont boldSystemFontOfSize:13];
    label.text = message;
    [statusWindow addSubview:label];
    [statusWindow makeKeyAndVisible];
    label.layer.transform = CATransform3DMakeRotation(M_PI * 0.5, 1, 0, 0);
    [UIView animateWithDuration:0.7 animations:^{
        label.layer.transform = CATransform3DIdentity;
    }completion:^(BOOL finished){
        double delayInSeconds = delay;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            [UIView animateWithDuration:0.5 animations:^{
                label.layer.transform = CATransform3DMakeRotation(M_PI * 0.5, -1, 0, 0);
            }completion:^(BOOL finished){
                statusWindow = nil;
                [[[UIApplication sharedApplication].delegate window] makeKeyAndVisible];
            }];
        });
    }];
}

アプリ内のどのコントローラーからでも使用できるように、UIViewController のカテゴリに入れています。

編集:QuartzCore.framework参照し#import <QuartzCore/QuartzCore.h>て追加する必要があります。

于 2012-10-13T19:55:48.300 に答える