IOS开发学习日记(十五)

目录

App启动过程及生命周期

App的启动

UIApplication

 UIApplicationDelegate

 通过App生命周期回调实现启动页

 闪屏的实现

简单实现闪屏功能

App启动过程及生命周期

App的启动

·main函数前

        动态链接 / 二进制文件加载 / runtime / 类的加载 ......

·main函数

int main(int argc, char * argv[]) {
    NSString * appDelegateClassName;
    @autoreleasepool {
        // Setup code that might create autoreleased objects goes here.
        appDelegateClassName = NSStringFromClass([AppDelegate class]);
    }
    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}

创建UIApplication对象(系统功能) 创建对应的delegate实现业务逻辑

UIApplication

·处理App生命周期 / 系统内存警告

·处理UI / statusbar / 图标消息数等状态的变化 / 方向

·处理openURL

·提供Delegate / Notification两种方式处理业务逻辑

·根据App状态调整业务逻辑

         ·Not running

        ·Inactive:中间的过渡状态

        ·Active:正在前台运行,系统分配更多资源

        ·Background:分配较少的资源

        ·Suspended:内存不足系统自动Kill      

 UIApplicationDelegate

 通过App生命周期回调实现启动页

 闪屏的实现

·启动前图片的组成

        ·Launch Screen + Splash Screen

·Launch Screen启动屏(系统级)

        ·是Main函数之前 + didFinishLaunch前

        ·系统启动App时自动展示

        ·在准备好App UI数据后自动消失

        ·给用户以响应,确定点击了正确的图标

·Splash Screen闪屏(业务逻辑)

        ·Launch Screen展示时间短,看不清

        ·实现同样的图片,显示图标等信息

        ·实现广告 / 推广活动页面

        ·实现游戏中Loading页面

使用Xcode配置图片:

        ·分别上传对应设备2x 3x的图片

        ·系统自动展示和消失

直接在当前Window上addSubview

页面结构保证在最上面

创建新的Window成为KeyWindow

调整window的level

多Window的管理 

简单实现闪屏功能

点击跳过或三秒钟后自动跳过

//
//  GSCSplashView.m
//  GSCApp1
//
//  Created by gsc on 2024/6/15.
//

#import "GSCSplashView.h"
#import "GSCScreen.h"


@interface GSCSplashView()

@property(nonatomic,strong,readwrite)UIButton *button;
@property(nonatomic,strong,readwrite)NSTimer *timer;

@end

@implementation GSCSplashView

-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if(self){
        self.image = [UIImage imageNamed:@"icon.bundle/splash.png"];
        [self addSubview:({
                    _button = [[UIButton alloc] initWithFrame:UIRectAdapter(330, 100, 60, 40)];
                    _button.backgroundColor = [UIColor lightGrayColor];
                    [_button setTitle:@"跳过" forState:UIControlStateNormal];
                    [_button addTarget:self action:@selector(_removeSplashView) forControlEvents:UIControlEventTouchUpInside];
                    _timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(_removeSplashView) userInfo:nil repeats:NO];
                    _button;
        })];
        self.userInteractionEnabled = YES;
    }
    return self;
}

#pragma mark -

-(void)_removeSplashView{
    [self removeFromSuperview];
}

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真的学不会了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值