Facebook Audience Network ios FBAdView 宽度

Posted

技术标签:

【中文标题】Facebook Audience Network ios FBAdView 宽度【英文标题】:Facebook Audience Network ios FBAdView width 【发布时间】:2015-07-15 08:14:51 【问题描述】:

我在视图控制器的 UIView 中添加了一个 FBAdView。 (我将视图背景设置为红色) FBAdView 是使用 kFBAdSizeHeight50Banner 的 adSize 创建的。 问题是 FBAdView 在添加时会计算其宽度,但在旋转设备后它不会再次计算其宽度

我尝试使用自动布局,但它不起作用

FBAdview添加代码(红色背景添加到UILabel)

FBAdView *fbAdView = [[FBAdView alloc] initWithPlacementID:@"***************_***************" adSize:kFBAdSizeHeight50Banner rootViewController:self]; fbAdView.delegate = self; [fbAdView loadAd]; [self.banner addSubview:fbAdView];

自动布局代码 - 不起作用

// 宽度约束,父视图宽度 [self.banner addConstraint:[NSLayoutConstraint constraintWithItem:fbAdView 属性:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.banner 属性:NSLayoutAttributeWidth 乘数:1 常量:0]];

// Height constraint, parent view height
[self.banner addConstraint:[NSLayoutConstraint constraintWithItem:fbAdView                                                         attribute:NSLayoutAttributeHeight                                                         relatedBy:NSLayoutRelationEqual                                                      toItem:self.banner
                           attribute:NSLayoutAttributeHeight
                                                     multiplier:1
                                                       constant:0]];

// Center horizontally
[self.banner addConstraint:[NSLayoutConstraint constraintWithItem:fbAdView
                                                      attribute:NSLayoutAttributeCenterX
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.banner
                                                      attribute:NSLayoutAttributeCenterX
                                                     multiplier:1.0
                                                       constant:0.0]];

// Center vertically
[self.banner addConstraint:[NSLayoutConstraint constraintWithItem:fbAdView
                                                      attribute:NSLayoutAttributeCenterY
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.banner
                                                      attribute:NSLayoutAttributeCenterY
                                                     multiplier:1.0
                                                       constant:0.0]];

打印屏幕 添加横幅后,它适合屏幕宽度 旋转后它不会改变它的宽度(就像它的父红色视图)

【问题讨论】:

【参考方案1】:

我认为您缺少一些约束。

添加这些行(可能需要一些小的更改)使您的代码工作:

self.banner.translatesAutoresizingMaskIntoConstraints = NO;
fbAdView.translatesAutoresizingMaskIntoConstraints = NO;


// Width constraint
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.banner
                                                     attribute:NSLayoutAttributeWidth
                                                     relatedBy:NSLayoutRelationEqual
                                                        toItem:self.view
                                                     attribute:NSLayoutAttributeWidth
                                                    multiplier:1
                                                      constant:0]];

// Height constraint
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[banner(==50)]"
                                                                 options:0
                                                                 metrics:nil
                                                                   views:NSDictionaryOfVariableBindings(banner)]];

我在https://github.com/overlordnyaldee/BannerAutoLayout发布了一个示例项目

【讨论】:

感谢行“fbAdView.translatesAutoresizingMaskIntoConstraints = NO;”是我需要的

以上是关于Facebook Audience Network ios FBAdView 宽度的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Audience Network 导致 NullPointerException

Facebook Audience Network:需要 Facebook 登录吗?

整合 Facebook Audience Network

原生 Facebook Audience Network 广告不可点击

Facebook Audience Network 频繁加载错误

在 Swift 中为 iOS 应用程序实现 Facebook Audience Network 广告