IOS Iphone版广告移动的类(封装好了,所有页面共用一个广告)
来源:互联网 发布:nodejs mysql建模 编辑:程序博客网 时间:2024/05/17 23:04
//// BannerViewController.h//#import <UIKit/UIKit.h>#import <iAd/iAd.h>#import <iAd/ADBannerView.h>#definekUp 1#define kDown (-1)#define bannerView_h 50#define kBannerFrameUnderNav CGRectMake(0, -50, 320, 50)#define kBannerFrameAboveTab CGRectMake(0, 367, 320, 50)@protocol ADDelegate @optional//在此方法中调整界面,当b为YES时,表示广告加载成功,调整界面,为NO时失败,界面调回原样- (void)ADIsComing:(BOOL)b;@end@interface BannerViewController : NSObject <ADBannerViewDelegate> { id <ADDelegate> delegate; NSInteger upOrDown;//当广告出现时view向上还是向下滑动 ADBannerView *view;}@property (nonatomic, assign) id<ADDelegate> delegate;@property (nonatomic, assign) NSInteger upOrDown;@property (nonatomic, assign) CGRect frame;@property (nonatomic, retain) ADBannerView *view;+ (id) sharedBanner;+ (void) releaseSharedBanner;- (id)initWithFrame:(CGRect)rect;- (BOOL) isBannerLoaded;@end
//// BannerViewController.m// //// Created by on 9/30/11.// Copyright 2011 __MyCompanyName__. All rights reserved.//#import "BannerViewController.h"BOOL receiveAd = NO;BannerViewController *bannerViewController;@implementation BannerViewController@synthesize delegate;@synthesize upOrDown;@synthesize view;+ (id) sharedBanner { if (bannerViewController == nil) { bannerViewController = [[[self class] alloc] initWithFrame:kBannerFrameUnderNav]; bannerViewController.upOrDown = kUp; } return bannerViewController;}+ (void) releaseSharedBanner { [bannerViewController release];}- (id)initWithFrame:(CGRect)rect { self = [super init]; if (self != nil) { self.view = [[[ADBannerView alloc] initWithFrame:rect] autorelease]; view.delegate = self; } return self;}- (void)setDelegate:(id <ADDelegate>)d { if (delegate == d) return; if (view.isBannerLoaded) { if (delegate != nil) { [delegate ADIsComing:NO]; } [d ADIsComing:YES]; } delegate = d;}- (CGRect)frame { return view.frame;}- (void)setFrame:(CGRect)r { view.frame = r;}- (BOOL) isBannerLoaded { return [(ADBannerView *)self.view isBannerLoaded];}#pragma mark - adbanner view delegage- (void)bannerViewDidLoadAd:(ADBannerView *)banner { if (receiveAd == NO) { receiveAd = YES; [delegate ADIsComing:YES]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; banner.frame = CGRectOffset(banner.frame, 0, upOrDown * (banner.frame.size.height + 12)); [UIView commitAnimations]; }}- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { if (receiveAd == YES) { receiveAd = NO; [delegate ADIsComing:NO]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; banner.frame = CGRectOffset(banner.frame, 0, -(upOrDown * (banner.frame.size.height + 12))); [UIView commitAnimations]; }}- (void)bannerViewActionDidFinish:(ADBannerView *)banner {}- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave { return YES;}- (void)dealloc { self.view = nil; [super dealloc];}@end
使用方法:
1:在viewDidAppear:方法中添加以下代码,共享广告,设置委托为self
- (void)viewDidAppear:(BOOL)animated{ #ifdef CONTRACTIONM_FREE_2_0_ BannerViewController *banner = [BannerViewController sharedBanner]; self.bannerViewController = banner; banner.delegate = self; banner.upOrDown = kUp; [self.view addSubview:self.bannerViewController.view];#endif [super viewDidAppear:animated];}
2:在委托方法中根据b的值 ,调整界面
#ifdef CONTRACTIONM_FREE_2_0_- (void)ADIsComing:(BOOL)b{ if (b == YES) { if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { self.settingsScrollView.frame = CGRectMake(0, 60, 320, 356); self.settingsScrollView.contentOffset = CGPointMake(0, 50); [self.settingsScrollView flashScrollIndicators]; [self.settingsScrollView setContentOffset:CGPointMake(0, 0) animated:YES]; } } else { self.settingsScrollView.frame = CGRectMake(0, 0, 320, 416); }}#endif
3:少了一步最最最重要的,我一直浪费了一天在这个上面,气死我啦,在页面跳转的时候把委托置为nil
-(void)viewWillDisappear:(BOOL)animated{ self.bannerViewController.delegate = nil; [super viewWillDisappear:animated];}
- IOS Iphone版广告移动的类(封装好了,所有页面共用一个广告)
- IOS广告移动的类(封装好了,所有页面共用一个广告)
- 关于iPhone的一个广告加载问题
- iOS 广告轮播图的实现与封装
- 移动广告的前景
- 移动广告的形式
- iOS及Android 启动页面(即欢迎页面),引导页面,及广告页面的加载
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
- 推荐一个移动广告平台(芒果移动平台)
- iOS 开机广告页面实现
- 移动广告
- 一个有趣的广告
- IOS版Cocos2d-x2.2使用移动广告聚合平台集成插屏广告教程
- debian的ssh终端中常用命令
- 【学习笔记】DM9000裸机驱动(二)之接收发送函数
- python问题:IndentationError:expected an indented block错误解决
- jdk5特性
- CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
- IOS Iphone版广告移动的类(封装好了,所有页面共用一个广告)
- 大公司与小公司的对比
- c语言-基础
- 《『若水新闻』客户端开发教程》——07.升级新闻内容UI
- Phone开发技巧之调试篇(3)— 程序Crash后的调试技巧
- C语言-数据类型(整型)
- Eclipse开发PHP调试(debug)环境配置
- 展销一批计算机及各类书籍外加望远镜130826
- IOS 播放音乐实例