IOS广告移动的类(封装好了,所有页面共用一个广告)

转载 2015年07月07日 15:41:13
  1. //  
  2. //  BannerViewController.h  
  3. //  
  4.   
  5. #import <UIKit/UIKit.h>  
  6. #import <iAd/iAd.h>  
  7. #import <iAd/ADBannerView.h>  
  8.   
  9. #define kUp 1  
  10. #define kDown (-1)  
  11. #define bannerView_h 50  
  12. #define kBannerFrameUnderNav CGRectMake(0, -5032050)  
  13. #define kBannerFrameAboveTab CGRectMake(036732050)  
  14.   
  15. @protocol ADDelegate   
  16. @optional  
  17. //在此方法中调整界面,当b为YES时,表示广告加载成功,调整界面,为NO时失败,界面调回原样  
  18. - (void)ADIsComing:(BOOL)b;  
  19. @end  
  20.   
  21. @interface BannerViewController : NSObject <ADBannerViewDelegate> {  
  22.     id <ADDelegate> delegate;  
  23.     NSInteger upOrDown;     //当广告出现时view向上还是向下滑动  
  24.     ADBannerView *view;  
  25. }  
  26.   
  27. @property (nonatomic, assign) id<ADDelegate> delegate;  
  28. @property (nonatomic, assign) NSInteger upOrDown;  
  29. @property (nonatomic, assign) CGRect frame;  
  30. @property (nonatomic, retain) ADBannerView *view;  
  31.   
  32. + (id) sharedBanner;  
  33. + (void) releaseSharedBanner;  
  34. - (id)initWithFrame:(CGRect)rect;  
  35. - (BOOL) isBannerLoaded;  
  36.   
  37. @end  

[java] view plaincopy
  1. //  
  2. //  BannerViewController.m  
  3. //    
  4. //  
  5. //  Created by   on 9/30/11.  
  6. //  Copyright 2011 __MyCompanyName__. All rights reserved.  
  7. //  
  8.   
  9. #import "BannerViewController.h"  
  10.   
  11.   
  12. BOOL receiveAd = NO;  
  13. BannerViewController *bannerViewController;  
  14.   
  15. @implementation BannerViewController  
  16. @synthesize delegate;  
  17. @synthesize upOrDown;  
  18. @synthesize view;  
  19.   
  20.   
  21. + (id) sharedBanner {  
  22.     if (bannerViewController == nil) {  
  23.         bannerViewController = [[[self class] alloc] initWithFrame:kBannerFrameUnderNav];  
  24.         bannerViewController.upOrDown = kUp;  
  25.     }  
  26.     return bannerViewController;  
  27. }  
  28.   
  29. + (void) releaseSharedBanner {  
  30.     [bannerViewController release];  
  31. }  
  32.   
  33. - (id)initWithFrame:(CGRect)rect {  
  34.     self = [super init];  
  35.     if (self != nil) {  
  36.         self.view = [[[ADBannerView alloc] initWithFrame:rect] autorelease];  
  37.         view.delegate = self;  
  38.     }  
  39.     return self;  
  40. }  
  41.   
  42. - (void)setDelegate:(id <ADDelegate>)d {  
  43.     if (delegate == d) return;  
  44.   
  45.     if (view.isBannerLoaded) {  
  46.         if (delegate != nil) {  
  47.             [delegate ADIsComing:NO];  
  48.         }  
  49.         [d ADIsComing:YES];  
  50.     }  
  51.     delegate = d;  
  52. }  
  53.   
  54. - (CGRect)frame {  
  55.     return view.frame;  
  56. }  
  57.   
  58. - (void)setFrame:(CGRect)r {  
  59.     view.frame = r;  
  60. }  
  61.   
  62. - (BOOL) isBannerLoaded {  
  63.     return [(ADBannerView *)self.view isBannerLoaded];  
  64. }  
  65.   
  66. #pragma mark - adbanner view delegage  
  67.   
  68. - (void)bannerViewDidLoadAd:(ADBannerView *)banner {  
  69.     if (receiveAd == NO) {  
  70.         receiveAd = YES;  
  71.         [delegate ADIsComing:YES];  
  72.   
  73.         [UIView beginAnimations:nil context:nil];  
  74.         [UIView setAnimationDuration:0.3];  
  75.         banner.frame = CGRectOffset(banner.frame, 0, upOrDown * (banner.frame.size.height + 12));  
  76.         [UIView commitAnimations];  
  77.     }  
  78. }  
  79.   
  80. - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {  
  81.     if (receiveAd == YES) {  
  82.         receiveAd = NO;  
  83.         [delegate ADIsComing:NO];  
  84.   
  85.         [UIView beginAnimations:nil context:nil];  
  86.         [UIView setAnimationDuration:0.3];  
  87.         banner.frame = CGRectOffset(banner.frame, 0, -(upOrDown * (banner.frame.size.height + 12)));  
  88.         [UIView commitAnimations];  
  89.     }  
  90. }  
  91.   
  92. - (void)bannerViewActionDidFinish:(ADBannerView *)banner {  
  93.   
  94. }  
  95.   
  96. - (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {  
  97.     return YES;  
  98. }  
  99.   
  100. - (void)dealloc {  
  101.     self.view = nil;  
  102.     [super dealloc];  
  103. }  
  104.   
  105. @end  

使用方法:

1:在viewDidAppear:方法中添加以下代码,共享广告,设置委托为self

[java] view plaincopy
  1. - (void)viewDidAppear:(BOOL)animated  
  2. {  
  3.       
  4. #ifdef CONTRACTIONM_FREE_2_0_  
  5.         BannerViewController *banner = [BannerViewController sharedBanner];  
  6.         self.bannerViewController = banner;  
  7.         banner.delegate = self;  
  8.         banner.upOrDown = kUp;  
  9.         [self.view addSubview:self.bannerViewController.view];  
  10. #endif  
  11.      
  12.     [super viewDidAppear:animated];  
  13. }  

2:在委托方法中根据b的值 ,调整界面

[java] view plaincopy
  1. #ifdef CONTRACTIONM_FREE_2_0_  
  2. - (void)ADIsComing:(BOOL)b  
  3. {  
  4.     if (b == YES) {  
  5.         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {  
  6.             self.settingsScrollView.frame = CGRectMake(060320356);  
  7.             self.settingsScrollView.contentOffset = CGPointMake(050);  
  8.             [self.settingsScrollView flashScrollIndicators];  
  9.             [self.settingsScrollView setContentOffset:CGPointMake(00) animated:YES];  
  10.         }  
  11.     }  
  12.     else {  
  13.         self.settingsScrollView.frame = CGRectMake(00320416);  
  14.     }  
  15. }  
  16. #endif  


3:少了一步最最最重要的,我一直浪费了一天在这个上面,气死我啦,在页面跳转的时候把委托置为nil

[java] view plaincopy
  1. -(void)viewWillDisappear:(BOOL)animated  
  2. {  
  3.     self.bannerViewController.delegate = nil;  
  4.     [super viewWillDisappear:animated];  

相关文章推荐

IOS Iphone版广告移动的类(封装好了,所有页面共用一个广告)

// // BannerViewController.h // #import #import #import #define kUp 1 #define kDown (-1) #defi...

js实现始终浮动在一个位置的广告和页面内容禁止选中

我们打开网页的时候,常会看到浮动在一个位置的广告,我们滚动滚动条,广告也会随着移动,所以广告始终位于那个位置。这种效果通过js可以很容易的实现,主要是在body的onscroll属性,控制图片始终在b...

iOS广告图页面

  • 2016-07-21 10:19
  • 3.38MB
  • 下载

Discuz!手机版版块页面主题列表中隔几个主题插入一个广告位的方法

打开模板(以触屏版为例) \template\default\touch\forum\forumdisplay.htm 将代码 0}--> {eval continue;} ...

ios App启动加载广告页面思路

需求 很多app(如淘宝、美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页。虽然说这个广告页面对用...

ios App启动加载广告页面思路

需求 很多app(如淘宝、美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页。虽然说这个广告页面...

谷歌眼镜尚未大规模上市,谷歌就已经为它准备好了广告工具

广告行业向来是挥金如土。尽管广告主们一掷千金,可效果却往往不佳。有人真的会去关注广告么?最近,“广告达人”谷歌的一项专利,可以在一定程度上让广告投入物有所值。 据外国科技媒体The Verge报...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)