新浪微博启动时"欢迎回来"动画

1.自定义view,XIB做好布局


设置iconView和textView默认隐藏

//
//  WelcomeView.h


#import <UIKit/UIKit.h>

@interface WelcomeView : UIView

/**
 *  返回一个WelcomeView实例的类方法
 */
+ (instancetype)welcomeView;

@end
//
//  WelcomeView.m


#import "WelcomeView.h"

@interface WelcomeView()

@property (weak, nonatomic) IBOutlet UIImageView *sloganView;

@property (weak, nonatomic) IBOutlet UIImageView *iconView;

@property (weak, nonatomic) IBOutlet UILabel *textView;
@end

@implementation WelcomeView

+ (instancetype)welcomeView
{
    return [[[NSBundle mainBundle] loadNibNamed:@"WelcomeView" owner:nil options:nil] lastObject];
}

/**
 *  视图即将添加到父控件上会调用这个方法
 */
- (void)didMoveToSuperview
{
    [super didMoveToSuperview];
    
    // 头像视图裁剪为圆形
    _iconView.layer.cornerRadius = 50;
    _iconView.layer.masksToBounds = YES;
    
    // 把头像transform往下移动50
    _iconView.transform = CGAffineTransformMakeTranslation(0, 50);
    
    [UIView animateWithDuration:0.75 animations:^{
        // slogan慢慢消失
        _sloganView.alpha = 0;
    } completion:^(BOOL finished) {
        // 然后头像显示,慢慢往上移动
        _iconView.hidden = NO;
        [UIView animateWithDuration:0.75 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
            // 头像transform还原
            _iconView.transform = CGAffineTransformIdentity;
        } completion:^(BOOL finished) {
            // 欢迎回来,慢慢显示
            _textView.alpha = 0;
            _textView.hidden = NO;
            [UIView animateWithDuration:0.75 animations:^{
                _textView.alpha = 1;
            } completion:^(BOOL finished) {
                //完成所有动画后,移除整个界面
                [self removeFromSuperview];
            }];
        }];
    }];
}

@end
2.view完成,下面是如何使用?

因为只有程序在第一次启动时显示,所以我们采取在AppDelegate中把视图加到窗口上:

// 显示欢迎界面
    WelcomeView *welcome = [WelcomeView welcomeView];
    welcome.frame = self.window.bounds;
    // 加到窗口上
    [self.window addSubview:welcome];
因为 通过 storyboard 启动,根控制器的 view 并不会在程序启动完成的时候添加到窗口,所以我们需要手动的创建窗口,需要做下面是设置






然后:

//
//  AppDelegate.m


#import "AppDelegate.h"
#import "WelcomeView.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

// 通过storyboard启动,根控制器的view并不会在程序启动完成的时候添加到窗口
//
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // 1.创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
    // 2.加载storyboard 创建窗口的根控制器
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [sb instantiateInitialViewController];
    self.window.rootViewController = vc;
    
    // 3.显示窗口
    [self.window makeKeyAndVisible];
    
    // 显示欢迎界面
    WelcomeView *welcome = [WelcomeView welcomeView];
    welcome.frame = self.window.bounds;
    // 加到窗口上
    [self.window addSubview:welcome];
    
    
    return YES;
}


- (void)applicationDidBecomeActive:(UIApplication *)application
{
    // 通过storyboard启动,根控制器的View是在这个方法中添加到窗口
}

@end
至此,就完成了。

3.其他技巧

把视图裁剪为圆形可以利用运行时机制:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值