iOS 启动页加入动态的广告实现
做产品的时候有的时候需要在程序启动的时候加入广告,不难。只要在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 启动页加入动态的广告实现相关推荐
- iOS启动页广告XHLaunchAd
一.前言: 1.现在越来越多的App在启动时插入广告,因平时项目中常用到,所以特意写了一个库,他叫XHLaunchAd. 2.Github地址:github.com/CoderZhuXH/- 3.导入 ...
- iOS-APP启动页加载广告
概述 加载广告页, 展现跳过按钮实现倒计时功能, 并判断广告页面是否更新. 详细 代码下载:http://www.demodashi.com/demo/10698.html 目前市场上很多APP(如淘 ...
- ios启动页尺寸_关于移动端App启动页的策划方案
App启动页是指app在启东时需要加载必要的运行环境和配置,在这个过程中提示用户等待的一个过渡页面. 在产品经理眼里启动页是app给予用户重要的第一印象:也是App最重要的黄金页面之一,所有用户100 ...
- Flutter实战01 - 启动页 闪屏广告 引导页
一个app通常都会有一个App通常都会有SplashPage页面,在这页面包含启动页.引导页(app简介说明).闪屏广告页(点广告页跳转到相应H5页面). 在Flutter实现引导页需要在Materi ...
- uniapp ios启动页自定义
拿到设计稿之后 在xcode里面创建项目 New Image Set 把启动页需要的图片拉入,可以多创建几个 然后拉入text Filed 创建文本,拉入Image View创建图片或者背景,编辑位置 ...
- iOS 启动页实现方案
启动页的定位 1.由于每次打开都能看到,因此启动页常用于广告位,为产品带来盈利. 2.用来判断是跳转主页面还是登陆界面. 3.用来缓冲app的加载时间. 实现思路 在didFinishLaunchin ...
- Xamarin.iOS启动图片过渡及广告展示
1.实现效果 启动应用时,启动图片自然过渡到广告图片中(外加基本动画[波纹及上翻页]),如: 2.实现方式 在FinishedLaunching执行时,往UIWindow里AddSubview视图,在 ...
- iOS 录屏大师启动页广告
隐藏系统状态栏 让app启动时图片全屏 进入程序后显示状态栏方法. 1.在<APP>-info.list文件中,加上"Status bar is initially hidden ...
- android启动页广告图,一张图搞定APP启动页广告
之前我们产品里的启动页比较简单,就是背景色加上我们的logo.slogan等,这种形式适配起来比较容易,把元素切出来交给开发写出来就行.最近由于运营的需求,我们需要在APP启动页展示广告,广告图更新频 ...
最新文章
- Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()
- android简单app实例_Android安卓小项目实战视频教程集锦
- Could not find codec parameters for stream 0 (Video: h264, none)
- VTK:隐式数据集剪辑用法实战
- conda创建虚拟环境,拥有多个Anconda版本
- 对于计算机维护的,关于计算机的硬件维护
- mysql临时表数量_MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
- Linux的常用命令练习
- 用户空间和内核空间是什么?
- 数据结构:堆栈的区别
- Poodle Centos
- Python爬虫:爬取华为应用市场app数据
- VIM如何将全部内容复制并粘贴到外部
- 因世俗的偏见--明明相爱,却不能走在一起
- 葫芦视频动漫排行榜前十名,没看过的可以补上
- 关于kali连不上网络
- mac下视频转换软件效率分析,最后只推荐三款格式转换软件
- elasticsearch ik分词实现 中文、拼音、同义词搜索
- Linux 指令:怎样从文件中找到重复行?
- fiddler的web端抓包配置流程