【问题标题】:Subview displays behind everything, after having put an adbannerview放置 adbannerview 后,子视图显示在所有内容后面
【发布时间】:2015-11-02 13:20:58
【问题描述】:

我有一个主视图和一个子视图。 一切正常:我单击视图上的“打开”按钮,在所有内容上方显示子视图,然后我可以关闭子视图。

我决定在我的应用底部添加一个 adBannerView。 当我运行应用程序时,adbannerView 运行良好:添加加载到我的应用程序底部的框架中。 但是当我单击“打开”按钮时,子视图不再显示在所有内容之上。 它显示在视图上的所有内容之下。 你能帮我解决这个问题吗?非常感谢!

这是我为 adBannerView 和 subView 实现的代码(我已经删除了与我的问题无关的其他代码):

import UIKit
import iAd

class ViewController: UIViewController, ADBannerViewDelegate {

@IBOutlet weak var boutonChangerPays: UIButton!
@IBOutlet weak var cadrePays: UIView! 
@IBOutlet weak var bannierePub: ADBannerView!

// Chargement initial de la Vue principale
override func viewDidLoad() {

    super.viewDidLoad()

    // Cadre Pays
    self.cadrePays.hidden = true

    // Banniere Ad
    self.canDisplayBannerAds = true
    self.bannierePub.delegate = self
    self.bannierePub.hidden = true
}

//*************************
// ADBANNERVIEW
// BANNIERE  DE  PUBLICITE
func bannerViewWillLoadAd(banner: ADBannerView!) {
    NSLog("bannierePub se charge")
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    self.bannierePub.hidden = false
}

func bannerViewActionDidFinish(banner: ADBannerView!) {
    NSLog("bannierePub a finit de se charger")
}

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
    NSLog("Action pendant que la bannière se charge")

    return true
}

//**************************************************************************
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// Retour de l'écran de détail
override func viewDidAppear(animated: Bool) {
    // Indicateur d'Activité : caché
    self.indicateurActivite.stopAnimating()
    self.indicateurActivite.hidden = true
}

// Bouton Changer Pays
@IBAction func boutonChangerPays(sender: UIButton) {

    // On affiche la Vue des Pays
    self.cadrePays.hidden = false
}       
}

【问题讨论】:

    标签: swift subview adbannerview displayobject


    【解决方案1】:

    您可以调用此函数将子视图置于一切之上。

    self.view.bringSubviewToFront(self.yourSubviewName)
    

    【讨论】:

    • 我试过这个,但它不起作用。 // Bouton Changer 支付 @IBAction func boutonChangerPays(sender: UIButton) { // 在 Vue des Pays self.cadrePays.hidden = false self.view.bringSubviewToFront(cadrePays) }
    【解决方案2】:

    令人惊讶的是,我通过尝试找到了解决方案:

    在我的按钮点击功能中,我添加了这段代码:

    self.view.addSubview(self.cadrePays)
    

    它使子视图回到底部! 我希望这不会“创建”很多相互堆叠的子视图!

    位置的限制根本没有受到尊重,我不得不将其居中:

    override func viewDidLayoutSubviews () {
    self.cadrePays.center = self.view.center
    }
    

    SubView 水平居中,但不是垂直居中,但现在我认为我非常接近解决方案。

    希望它能帮助其他人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      相关资源
      最近更新 更多