Swift:addSubview 后背景消失

Posted

技术标签:

【中文标题】Swift:addSubview 后背景消失【英文标题】:Swift: Background disappears after addSubview 【发布时间】:2016-02-25 15:53:46 【问题描述】:

我有一个 GameOver 类,它显示背景颜色和 playAgain 按钮。 添加“view.addSubview(self.playAgainButton)”后,背景色弹出,突然从屏幕上消失。 playAgain-Button 仍然存在。

如果我删除 addSubview 调用,背景颜色会保留在那里。

谁能帮帮我?

class GameOver: SKScene
  var playAgainButton = UIButton()
  var playAgainButtonImage = UIImage(named: "PlayAgainButton")

  override func didMoveToView(view: SKView) 
     backgroundColor = UIColor.redColor()

     self.playAgainButton = UIButton(type: UIButtonType.Custom)
     self.playAgainButton = setImage(playAgainButtonImage, forState: .Normal)
     self.playAgainButton.frame = CGRectMake(self.frame.size.width / 2, self.frame.size.height / 2, 190, 70)
     self.playAgainButton.layer.anchorPoint = CGPointMake(1.0, 1.0)
     self.playAgainButton.layer.zPosition = 0

     // If I add this line -> backgroundcolor disappears
     view.addSubview(self.playAgainButton)

  

我的 GameScene gameOver 函数是这样的(可能有错误?)

func gameOver() 
   let skView = self.view! as SKView
   skView.ignoresSiblingOrder = true

   self.scene?.removeFromParent()

   let transition = SKTransition.fadeWithColor(UIColor.grayColor(), duration: 1.0)
   transition.pausesOutgoingScene = false

   var scene: GameOver!
   scene = GameOver(size: skView.bounds.size)

   scene.scaleMode = .AspectFill

   skView.presentScene(scene, transition: transition)

【问题讨论】:

您的意思是在您正在移动到的视图或您当前所在的视图(离开)上设置背景颜色? 看起来他是在场景上设置背景,然后在视图顶部扔了一个按钮,你确定场景本身没有消失,而不仅仅是背景颜色?跨度> @Putz1103:我要移动到的视图的背景颜色消失了 @Knight0fDragon 视图不是场景的一部分吗?按钮如何可见但背景色不可见。你能给我一些建议如何解决这个问题吗? 我自己发现了这个问题。我必须将子视图添加到超级视图。 view.superview?.addSubview(self.playAgainButton) 【参考方案1】:

你必须将子视图添加到父视图

改变

view.addSubview(self.playAgainButton)

view.superview?.addSubview(self.playAgainButton)

解决问题

【讨论】:

以上是关于Swift:addSubview 后背景消失的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 背景图片滚动后消失

iOS UIButton在将背景图像设置为nil后消失

添加一些样式后,背景图像消失

background设置不平铺后图片消失

我的背景消失了

将其设置为清除后,Swift 模态视图背景显示为黑色