APP开屏广告设计思路

广告页显示

逻辑图

代码

  1. 根控制器

    MSTAdServerViewController *VC = [[MSTAdServerViewController alloc] init]; self.window.rootViewController = VC; [self.window makeKeyAndVisible];

  2. 获取屏幕尺寸

    NSString *imageName = [self splashImageNameForOrientation:[[UIDevice currentDevice] orientation]];

    /* 根据当前设备的'旋转方向' -> 获取 当前VC 的 view尺寸 -> 匹配设配当前的 旋转方向 及 尺寸

      -> 获取 'UILaunchImages' 里,所有 'LaunchImage'
      	-> 通过mainBundle
      	-> infoDictionary
      	-> UILaunchImages
      	
      -> 对 '设备尺寸'&'旋转方向' 进行匹配
      
      => 获取 Launch Image 的图片
    复制代码

    */

    • (NSString *)splashImageNameForOrientation:(UIDeviceOrientation)orientation { CGSize viewSize = self.view.bounds.size; NSString *viewOrientation = @"Portrait"; if (UIDeviceOrientationIsLandscape(orientation)) { viewSize = CGSizeMake(viewSize.height, viewSize.width); viewOrientation = @"Landscape"; } NSArray *imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"]; for (NSDictionary *dict in imagesDict) { CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]); if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]]) { return dict[@"UILaunchImageName"]; } } return nil; }
  3. 设定当前控制器背景内容

    // 把第二步获取到到图片,转成 CGImage 变成当前 VC 的 layer self.view.layer.contents = (__bridge id)([(id)[UIImage imageNamed:imageName] CGImage]);

  4. 添加 '广告ImageView'

    _showAdServerImgView.alpha = 0.0; // 设定一下 alpha 值,方便等等做动画 [self.view addSubview:_showAdServerImgView];

4.1 广告图 -> 存在

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kMSTAdServerImgURLFileName];
if (data) {
    self.advert = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    [self setterAdServerImgURL];
}

// 然后,用动画展示
[self.showAdServerImgView setImageURL:url];
[UIView animateWithDuration:0.45 animations:^{
	self.showAdServerImgView.alpha = 1.0;
}];
复制代码

4.2 广告图片 -> 不存在

// 如果不存在,就等 网络数据,如果一直没有,那就下次再说
复制代码
  1. 获取网络数据

    • (void)fetchAdvert { @weakify(self); [[MSTClient sharedInstance] fetchAdvertWithCompletionHandler:^(NSInteger code, NSString *msg, id data) { @strongify(self); if (respondCodeOK(code)) { self.advert = [MSTAdvert modelWithDictionary:data]; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.advert]; [[NSUserDefaults standardUserDefaults] setObject:data forKey:kMSTAdServerImgURLFileName]; [self setterAdServerImgURL]; } }]; }
  2. 再次变更 '根控制器'

    • (void)setRootViewControllerForWindow { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];

        MSTHomeViewController *VC = [[MSTHomeViewController alloc] init];
        MSTHomeNavViewController *nav = [[MSTHomeNavViewController alloc] initWithRootViewController:VC];
        app.window.rootViewController = nav;
      复制代码

      }); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值