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.其他技巧
把视图裁剪为圆形可以利用运行时机制: