做产品的时候有的时候需要在程序启动的时候加入广告,不难。只要在appdelegate.m 的启动加载完成方法加入需要的广告视图就可以了,但是有的时候需要让启动图看起来就是一个广告,只有一个界面。而且还要这个广告里面会动,iOS的启动图只能是静态的,而且固定,为了实现看起来的动画效果,只能进行伪造了。

实现思路:

用一个固定的png图片左启动图,应该和广告视图需要进行动画的期初的位置一致,当启动图消失的时候,呈现出图片,实际遇到的困难是,因为广告图片是从网络请求加载的,当时把广告视图放在了请求数据的块里面,广告出现的时候会闪一下,放在外面就没事了。

广告的头文件

//  XBAdvertView.h
//  scoreCount
//
//  Created by 王国栋 on 15/12/22.
//  Copyright © 2015年 xiaobai. All rights reserved.
//#import <UIKit/UIKit.h>
@protocol XBAdvertViewDelegate <NSObject>
/***  图片被点击的代理*/
-(void)adViewClick;
@end
@interface XBAdvertView : UIView@property (nonatomic,weak) id<XBAdvertViewDelegate> delegate;@property (nonatomic,strong) UIImage* adimage;@end

广告的m文件

//
//  XBAdvertView.m
//  scoreCount
//
//  Created by 王国栋 on 15/12/22.
//  Copyright © 2015年 xiaobai. All rights reserved.
//#import "XBAdvertView.h"
#import "MacroDefinition.h"
#import "UIDeviceHardware.h"#define kScreenW [UIScreen mainScreen].bounds.size.width
#define kScreenH [UIScreen mainScreen].bounds.size.height#define AppViewOriginCenterY kScreenH*0.335
#define AdvertViewRatio 0.75#define AppViewObjCenterY (kScreenH*AdvertViewRatio+35)#define AppNameObjCenterY AppViewObjCenterY+30
#define AppNameOriginCenterY kScreenH+20#define AppImageViewW 60/0.6
#define AppImageViewH AppImageViewW@interface XBAdvertView()///**
// *  广告的图片
// */
//@property (nonatomic,strong) UIImage * advertImage;
///**
// *  app图标
// */
//@property (nonatomic,strong) UIImage*  appImage;
//
//@property (nonatomic,strong)UILabel * appName;
//
///**
// *  图片的URL
// */
//@property (nonatomic,strong) NSString* picURL;
//
///**
// *  代理类去处理点击的方法
// */@property (nonatomic,strong) UIImageView * advertImv;
@property (nonatomic,strong) UIImageView * appImv;
@property (nonatomic,strong) UILabel * appName;
@property (nonatomic,strong) UILabel * appPinyin;
@property (nonatomic,strong) UIImage *image;
@end
@implementation XBAdvertView- (void)setAdimage:(UIImage *)adimage
{self.advertImv.image = adimage;[UIView animateWithDuration:1.0 delay:0.5 options:UIViewAnimationOptionCurveEaseIn animations:^{UIDeviceResolution ios_Model = [UIDeviceHardware currentResolution]; //获取设备尺寸if (ios_Model==UIDevice_iPhoneHiRes||ios_Model==UIDevice_iPhoneStandardRes||ios_Model==UIDevice_iPhoneTallerHiRes){self.appImv.center = CGPointMake(self.appImv.center.x, SCREEN_HEIGHT-108+20);}else{self.appImv.center = CGPointMake(self.appImv.center.x, SCREEN_HEIGHT-108+25);}self.appName.center= CGPointMake(self.appName.center.x, SCREEN_HEIGHT-108+self.image.size.height/2+5+15);self.appImv.transform = CGAffineTransformMakeScale(0.6, 0.6);self.appPinyin.center = CGPointMake(self.appPinyin.center.x,SCREEN_HEIGHT-15-10);//self.appPinyin.frame = CGRectMake(0, CGRectGetMaxY(self.appName.frame)+5, SCREEN_WIDTH, 20);} completion:^(BOOL finished) {//        [UIView animateWithDuration:1.0 animations:^{////            self.advertImv.alpha=1.0f;//        }];self.advertImv.alpha=1.0f;[UIView animateWithDuration:3.0 animations:^{self.advertImv.alpha=1.0f;} completion:^(BOOL finished) {[NSThread sleepForTimeInterval:2.0];[self removeFromSuperview];}];}];}
- (instancetype)initWithFrame:(CGRect)frame
{NSLog(@"initWithFrame");if (self = [super initWithFrame:frame]) {//设置广告self.backgroundColor = [UIColor whiteColor];self.advertImv = [[UIImageView alloc]init];self.advertImv.backgroundColor = [UIColor grayColor];self.advertImv.contentMode=UIViewContentModeScaleToFill;self.advertImv.alpha = 0;//设置为透明[self addSubview:self.advertImv];//添加手势UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(click)];tap.numberOfTapsRequired=1;[self.advertImv addGestureRecognizer:tap];//设置app图标self.appImv =[[ UIImageView alloc]init];self.appImv.image = [UIImage imageNamed:@"iphone6p"];[self addSubview:self.appImv];//设置app 的名字self.appName = [[UILabel alloc]init];self.appName.text = @"乐校";self.appName.font = UIFont(18);self.appName.textColor = BLUE_22C4FF;self.appName.textAlignment=NSTextAlignmentCenter;[self addSubview:self.appName];self.appPinyin =[[UILabel alloc]init];self.appPinyin.textAlignment = NSTextAlignmentCenter;self.appPinyin.font = UIFont(13);self.appPinyin.textColor = BLUE_22C4FF;self.appPinyin.text =@"使大学生活更精彩";[self addSubview:self.appPinyin];//设置广告尺寸UIDeviceResolution ios_Model = [UIDeviceHardware currentResolution]; //获取设备尺寸if (ios_Model==UIDevice_iPhoneHiRes||ios_Model==UIDevice_iPhoneStandardRes||ios_Model==UIDevice_iPhoneTallerHiRes){self.image = [UIImage imageNamed:@"iphone5"];self.appImv.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);}else if (ios_Model==UIDevice_iPhone6HiRes){self.image = [UIImage imageNamed:@"iphone6"];self.appImv.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);}else if (ios_Model==UIDevice_iPhone6pHiRes){self.image = [UIImage imageNamed:@"iphone6p"];self.appImv.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);}//        self.appImv.frame = CGRectMake(0, 0, AppImageViewW, AppImageViewH);if (ios_Model==UIDevice_iPhoneHiRes||ios_Model==UIDevice_iPhoneStandardRes){self.appImv.center = CGPointMake(kScreenW/2, AppViewOriginCenterY+5);}else if (ios_Model==UIDevice_iPhone6HiRes){self.appImv.center = CGPointMake(kScreenW/2, AppViewOriginCenterY);}else if (ios_Model==UIDevice_iPhoneTallerHiRes||ios_Model==UIDevice_iPhone6pHiRes){self.appImv.center = CGPointMake(kScreenW/2, AppViewOriginCenterY);}//设置app名字的尺寸self.appName.frame =CGRectMake(0, 0, AppImageViewW, 30);self.appName.center=CGPointMake(kScreenW/2, AppNameOriginCenterY);//设置app拼音的尺寸self.appPinyin.frame =CGRectMake(0, 0, SCREEN_WIDTH, 20);self.appPinyin.center=CGPointMake(kScreenW/2, AppNameOriginCenterY+AppImageViewH/2);//设置广告尺寸//self.advertImv.image = adimg;self.advertImv.frame= CGRectMake(0, 0, kScreenW,kScreenH);}return self;
}/***  交给代理类处理图片点击后的按钮*/
-(void)click
{if ([self.delegate respondsToSelector:@selector(adViewClick)]) {[self.delegate adViewClick];}
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {// Drawing code
}
*/@end
  [self.view setBackgroundColor:[UIColor greenColor]];XBAdvertView * ad = [[XBAdvertView alloc]initWithFrame:[UIScreen mainScreen].bounds];UIImage * image = [UIImage imageNamed:@"ad.jpg"];ad.adimage = image;[self.view addSubview:ad];

iOS 启动页加入动态的广告实现相关推荐

  1. iOS启动页广告XHLaunchAd

    一.前言: 1.现在越来越多的App在启动时插入广告,因平时项目中常用到,所以特意写了一个库,他叫XHLaunchAd. 2.Github地址:github.com/CoderZhuXH/- 3.导入 ...

  2. iOS-APP启动页加载广告

    概述 加载广告页, 展现跳过按钮实现倒计时功能, 并判断广告页面是否更新. 详细 代码下载:http://www.demodashi.com/demo/10698.html 目前市场上很多APP(如淘 ...

  3. ios启动页尺寸_关于移动端App启动页的策划方案

    App启动页是指app在启东时需要加载必要的运行环境和配置,在这个过程中提示用户等待的一个过渡页面. 在产品经理眼里启动页是app给予用户重要的第一印象:也是App最重要的黄金页面之一,所有用户100 ...

  4. Flutter实战01 - 启动页 闪屏广告 引导页

    一个app通常都会有一个App通常都会有SplashPage页面,在这页面包含启动页.引导页(app简介说明).闪屏广告页(点广告页跳转到相应H5页面). 在Flutter实现引导页需要在Materi ...

  5. uniapp ios启动页自定义

    拿到设计稿之后 在xcode里面创建项目 New Image Set 把启动页需要的图片拉入,可以多创建几个 然后拉入text Filed 创建文本,拉入Image View创建图片或者背景,编辑位置 ...

  6. iOS 启动页实现方案

    启动页的定位 1.由于每次打开都能看到,因此启动页常用于广告位,为产品带来盈利. 2.用来判断是跳转主页面还是登陆界面. 3.用来缓冲app的加载时间. 实现思路 在didFinishLaunchin ...

  7. Xamarin.iOS启动图片过渡及广告展示

    1.实现效果 启动应用时,启动图片自然过渡到广告图片中(外加基本动画[波纹及上翻页]),如: 2.实现方式 在FinishedLaunching执行时,往UIWindow里AddSubview视图,在 ...

  8. iOS 录屏大师启动页广告

    隐藏系统状态栏 让app启动时图片全屏 进入程序后显示状态栏方法. 1.在<APP>-info.list文件中,加上"Status bar is initially hidden ...

  9. android启动页广告图,一张图搞定APP启动页广告

    之前我们产品里的启动页比较简单,就是背景色加上我们的logo.slogan等,这种形式适配起来比较容易,把元素切出来交给开发写出来就行.最近由于运营的需求,我们需要在APP启动页展示广告,广告图更新频 ...

最新文章

  1. Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()
  2. android简单app实例_Android安卓小项目实战视频教程集锦
  3. Could not find codec parameters for stream 0 (Video: h264, none)
  4. VTK:隐式数据集剪辑用法实战
  5. conda创建虚拟环境,拥有多个Anconda版本
  6. 对于计算机维护的,关于计算机的硬件维护
  7. mysql临时表数量_MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
  8. Linux的常用命令练习
  9. 用户空间和内核空间是什么?
  10. 数据结构:堆栈的区别
  11. Poodle Centos
  12. Python爬虫:爬取华为应用市场app数据
  13. VIM如何将全部内容复制并粘贴到外部
  14. 因世俗的偏见--明明相爱,却不能走在一起
  15. 葫芦视频动漫排行榜前十名,没看过的可以补上
  16. 关于kali连不上网络
  17. mac下视频转换软件效率分析,最后只推荐三款格式转换软件
  18. elasticsearch ik分词实现 中文、拼音、同义词搜索
  19. Linux 指令:怎样从文件中找到重复行?
  20. fiddler的web端抓包配置流程

热门文章

  1. 学习Python的心得体会——阜阳师范大学 21级大数据管理与应用1班的同学不要抄哦
  2. IMAX [生活时尚]
  3. 2022.11.2 英语背诵
  4. 如何在HTML文档中显示空格
  5. 剑指OFFER 03-11
  6. 超级码力在线编程大赛初赛 第3场 1.最大公倍数
  7. aardio - 【库】webp图片转换
  8. NPN和PNP 的电流方向 、大小关系 、电压偏置
  9. node.js常用模块
  10. 职场上情商高的人有什么特征,盘点职场上情商高的人必做的3件事