【问题标题】:Swift and Autolayout (specifically for iAd)Swift 和 Autolayout(专门用于 iAd)
【发布时间】:2014-12-15 21:27:21
【问题描述】:

有谁知道在 Swift 中编写自动布局的任何教程?通常我会尝试使用 Objective-C,但有些代码似乎无法转换为 Swift。基本上我想要一个从导航栏底部滑入视图的横幅,缩小通常就位的 UITextView。令人惊讶的是,Apple 没有提供如何在 Swift 中正确集成 iAD 横幅的示例。我已经搞砸了两天了,我无处可去。

编辑:我附上屏幕截图,因为我不确定我是否已经足够清楚地解释了我想要做什么。请注意,当横幅显示时,UITextView 被 iAd 横幅视图覆盖。我完全不知道使用 AutoLayout 如何删除将 UITextView 绑定到导航栏底部的约束,而是应用约束将其绑定到 iAdbannerView 的底部。

【问题讨论】:

  • 发布您目前所拥有的内容,以便人们可以提供一些指导。
  • 使用 Swift 或 Objective-C 的方法非常相似。也许你应该把你的问题分解成几个步骤,这样你就可以确定哪里出了问题。例如,如果您只是尝试在没有动画的情况下显示 iAd,您的项目是否有效?
  • 假设您的目标是 iOS 7 及更高版本,您是否尝试过简单地将视图控制器的 canDisplayBannerAds 属性设置为 viewDidLoad 中的 true?这就是我需要做的所有事情才能得到你所描述的。不需要任何其他代码或 Interface Builder 中的任何更改;它刚刚工作。
  • canDisplayBannerAds 的问题在于它只将它们显示在底部,并且由于我的应用程序最关注文本输入,因此键盘会覆盖它。至于我现在有什么,我根据旧的 Objective-C 代码尝试了一些东西,但我基本上什么都没有。没有任何效果。
  • 可能值得结帐github.com/Masonry/Snappy。我使用 Masonry 在 objc 中编码自动布局,Snappy 是他们(正在处理)到 Swift 的端口。

标签: ios swift autolayout iad


【解决方案1】:

如果没有任何代码,很难准确理解您想要什么,但是如果您在文本视图和添加横幅之间添加约束,然后当您要显示的广告横幅时,只需修改约束的常量值。以下是一些可应用于 textview 和 iAdview 以实现此行为的布局

iadview 的约束如下

@"V:[textView]-(0)-[iadView(==44)]"
@"H:|-(0)-[iadView]-(0)-|"

那么,如果你对 textview 有以下约束

@"V:[textView]-(x)-|"
@"H:|-(0)-[textView]-(0)-|"

如果你将 x 的值更改为 44 if 会减小 textview 的大小并显示 iadView :)

此外,如果您希望它被动画化,只需调用

[自我布局如果需要]

【讨论】:

  • 我现在还没有上台,因为 AdBanner 甚至不会采用正确的尺寸。在纵向模式下,我正在将纵向 AdBanner 放置在横向应放置的位置。考虑到它是一个创收框架,我不知道为什么苹果要让这件事变得如此困难。
【解决方案2】:

我不知道你卡住的确切原因,但这里有两个非常好的 AutoLayout 教程:

这个带有 Swift 代码: http://www.raywenderlich.com/83129/beginning-auto-layout-tutorial-swift-part-1

这更像是一个关于 Size Classes 的通用概念: http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

如果你理解了这些,你应该可以为所欲为。

【讨论】:

  • 我已经查看了这些内容,但它们都与使用 Autolayout 和 Interface Builder 有关。它们没有涵盖我将如何处理完全删除 UI 元素,或以编程方式添加新元素。问题是,如果我想在我的视图中添加 iAd 横幅,它会破坏 Autolayout,因为现有元素无法重新连接到新对象,它们仍然有现有约束,我不知道如何删除它。跨度>
  • 你检查过这个 stackoverflow 答案了吗:stackoverflow.com/questions/24771295/…
  • 我没有看到它,但不幸的是它没有涵盖我想做的任何事情。我有一个 UITextView,它的顶部绑定到导航栏的底部。我希望能够按需在导航栏和 UITextView 之间插入 iAd。相反,我希望也能够按需删除它。
猜你喜欢
  • 1970-01-01
  • 2015-08-18
  • 2018-10-28
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多