- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在代码中执行以下操作,以避免“模糊”广告的问题。但这是一个好的做法吗?一个潜在的问题是 - 假设在 viewWillDisappear 之前,发送了一个广告请求,然后当广告返回时,adBannerView 实例已经消失。这会是一个大问题吗?我应该只做 hideAdBanner 吗?
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear: animated];
// create the ad banner view
[self createAdBannerView];
if (adBannerView != nil) {
UIInterfaceOrientation orientation = self.interfaceOrientation;
[self changeBannerOrientation:orientation];
}
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// iAd
if (adBannerView != nil) {
[self hideAdBanner];
adBannerView.delegate = nil;
[adBannerView release];
adBannerView = nil;
}
}
最佳答案
我对广告横幅使用单例,并在每个 ViewDidLoad 上将其调用到 View 中。这会自动将其从之前的 View 中删除。
这是针对 adWhirl 的,但您应该能够仅针对 iAD 采用它。
adWhirlSingleton.h
#import <Foundation/Foundation.h>
#import "AdWhirlDelegateProtocol.h"
#import "AdWhirlView.h"
@interface adWhirlSingleton : NSObject <AdWhirlDelegate> {
AdWhirlView *awView;
UIViewController *displayVC;
}
@property (strong, nonatomic) AdWhirlView *awView;
@property (strong, nonatomic) UIViewController *displayVC;
+(id)sharedAdSingleton;
-(void)adjustAdSize:(CGFloat)x:(CGFloat)y;
@end
adWhirlSingleton.m
#import "adWhirlSingleton.h"
@implementation adWhirlSingleton
static adWhirlSingleton* _sharedAdSingleton = nil;
@synthesize awView, displayVC;
+(id)sharedAdSingleton
{
@synchronized(self)
{
if(!_sharedAdSingleton)
_sharedAdSingleton = [[self alloc] init];
return _sharedAdSingleton;
}
return nil;
}
+(id)alloc
{
@synchronized([adWhirlSingleton class])
{
NSAssert(_sharedAdSingleton == nil, @"Attempted to allocate a second instance of a singleton.");
_sharedAdSingleton = [super alloc];
return _sharedAdSingleton;
}
return nil;
}
-(id)init
{
self = [super init];
if (self != nil) {
// initialize stuff here
self.awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
}
return self;
}
-(void)dealloc
{
displayVC = nil;
if (awView) {
[awView removeFromSuperview]; //Remove ad view from superview
[awView replaceBannerViewWith:nil];
[awView ignoreNewAdRequests]; // Tell adwhirl to stop requesting ads
[awView setDelegate:nil];
awView = nil;
}
}
-(void)adjustAdSize:(CGFloat)x :(CGFloat)y
{
[UIView beginAnimations:@"AdResize" context:nil];
[UIView setAnimationDuration:0.7];
awView.frame = CGRectMake(x, y, kAdWhirlViewWidth, kAdWhirlViewHeight);
[UIView commitAnimations];
NSLog(@"Recent Network Name: %@",[awView mostRecentNetworkName]);
}
-(BOOL)adWhirlTestMode
{
return YES;
}
-(NSString *)adWhirlApplicationKey
{
return @"xxxxxxxxxxxxx";
}
-(UIViewController *)viewControllerForPresentingModalView
{
return displayVC;
}
-(void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView
{
NSLog(@"%s",__FUNCTION__);
NSLog(@"Recent Network Name: %@",[awView mostRecentNetworkName]);
//[self adjustAdSize];
}
-(void)adWhirlDidFailToReceiveAd:(AdWhirlView *)adWhirlView usingBackup:(BOOL)yesOrNo
{
NSLog(@"%s",__FUNCTION__);
}
@end
然后将 adWhirlSingleton 导入到每个 ViewController 中,并且在每个 viewWillAppear 中我只需实现此:
adWhirlSingleton *adWhirlSingle = [adWhirlSingleton sharedAdSingleton];
adWhirlSingle.displayVC = self;
[adWhirlSingle adjustAdSize:0 :self.view.frame.size.height -50];
[self.view addSubview:adWhirlSingle.awView];
[self.view bringSubviewToFront:adWhirlSingle.awView];
NSLog(@"Ad Banner View");
但是我使用 UITableView 的 View ,我使用这个:
adWhirlSingleton *adWhirlSingle = [adWhirlSingleton sharedAdSingleton];
adWhirlSingle.displayVC = self;
[adWhirlSingle adjustAdSize:0 :self.tabBarController.view.frame.size.height -99];
[self.tabBarController.view addSubview:adWhirlSingle.awView];
NSLog(@"Should have added Ad!");
希望对你有一点帮助
关于iphone - 删除 viewWillDisappear 上的 AdBannerView 并将其添加回 viewWillAppear 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422177/
我在我的应用程序中使用导航 Controller 。我尝试单击一个按钮(不在导航栏中)的一个 UI viewWillDisappear 未被调用。但我没有使用 navigationController
我在选项卡 View 中有一个表单;我将任何字段的表单标记为已更改,如果表单是脏的(代替“保存”按钮),我想弹出一个带有“保存”/“取消”的 ActionSheet。在用户响应正在处理的 Action
我制作了一个播放器应用。当用户关闭应用程序(进入后台模式)并调用 viewWillDisappear 时,播放器停止播放音频。 我无法在 applicationDidEnterBackground 中
我有一个带有文本字段的 UITableviewController。文本字段包含必填字段。 如果用户没有输入所有字段就离开了屏幕,我想用 alertview 提醒用户。我在 viewwilldisap
我有一个 UIViewController,ViewControllerA,它显示为来自 RootViewController 类的模态视图 Controller 。 ViewControllerA
我的应用程序使用带有 splitviewcontroller 的 Storyboard。在左侧,我有带有选项列表的表格 View 。在右侧,我有一些关于左侧选项的信息。就像在设置应用程序中一样。当用户
我有一个带有两个简单屏幕的应用程序。第一个屏幕始终打开第二个屏幕的相同实例。第二个屏幕有一个文本字段和一个用于手动隐藏键盘的按钮。 viewWillDisappear 上的 resignFirstRe
我有一个 iOS 应用程序,它使用远程服务器上托管的数据库。 在 ViewWillDisappear 函数内执行数据库 INSERT 是否可能或只是不好的做法? 我似乎找不到太多有关 Apple 在该
我想在用户点击后退按钮返回到我的 Root View Controller 时执行动画。动画将简单地突出显示用户在详细 View Controller 中所做的更改。 我试过了。动画本身可以工作(对于
我是 Swift 的新手,我在我的应用程序中发现了一些奇怪的崩溃。 Fabric 报告说崩溃发生在 viewWillDisappear() 中。 我有两个 ViewControllers。用户在 A
在 viewWillDisappear 上,我需要更新很多 Core Data 记录,这样做会在我从一个 viewController 移动到另一个(通过 Tab View Controller)时造
所以我的应用程序中有一个 UINavController 并且我试图在用户按下后退按钮时执行一个方法。我到处搜索,只能找到断章取义的零碎内容。 有没有一种方法可以实现某种检查,在用户按下后退按钮关闭当
我需要检查 viewWillDisappear: 是否被调用,因为我将另一个 UIViewController 呈现为模态。有谁知道这是否可能? 更新 我想知道为什么要调用它。例如,如果它被弹出或者另
我有以下场景: 在 vcA 中(当用户点击 UI 中的按钮时): 使用 NIB 文件实例化 vcB -(当用户点击 UI 中的按钮时) 在 vcB 中初始化一个 iVar 使用 presentModa
是否有 viewWillDisappear 等同于 CCScenes ? 就像 onExit 等价于 viewDidDisappear 或 onEnter 等价于 viewDidAppear . 最佳
当我正在搜索然后切换 UItab 时,不会调用 ViewWillDisappear。知道为什么当我过滤结果显示和切换选项卡时 ViewWillDisappear 没有被调用吗? func update
这是之前 Unresolved 帖子的后续内容。我在 TableView 中有一个导航 Controller 、一个 TableView Controller 和一个搜索栏。所有这些都内置在 Stor
这是日志输出 2013-03-16 14:02:59.301 Echo[65406:4503] child viewWillDisappear start 2013-03-16 14:02:59.30
我有一个简单的导航层次结构: Controller 1 > Controller 2 > Controller 3 每个 Controller 都包含对其子级和父级的引用(@property(非原子,
我有一个包含 UIWebView 的 View ,它正在加载谷歌地图(所以有很多 JavaScript 等)。我遇到的问题是,如果用户在 Web View 完成加载之前点击导航栏上的“后退”按钮,我不
我是一名优秀的程序员,十分优秀!