游乐场,无法将同一个UIImageView设置为多个UIView

时间:2017-03-29 08:06:52

标签: swift swift3 swift-playground

我已获得此代码

    override public func viewDidLoad() {

    let imageBlankCard = UIImage(named: "BlankCard.png")
    let imageViewBlankCard = UIImageView(image: imageBlankCard)

    rockCard.addSubview(imageViewBlankCard)
    scissorCard.addSubview(imageViewBlankCard)
    paperCard.addSubview(imageViewBlankCard)

    self.view.addSubview(rockCard)
    self.view.addSubview(scissorCard)
    self.view.addSubview(paperCard)

}

但是当我在游乐场跑步时,只有最新的UIView(paperCard)正确显示,其他卡片根本没有显示,如图所示here:应该有两张卡片,如上一张一个,代替箭头。 有人能帮我吗?谢谢大家!

1 个答案:

答案 0 :(得分:1)

根据documentation

  

视图只能有一个超级视图。如果视图已经具有超视图并且该视图不是接收者,则此方法会在使接收器成为新的超级视图之前删除先前的超视图。

这解释了您的行为。

一个解决方案是创建三个单独的图像视图,并将每个图像视图添加为子视图。

根据变量名称判断,我认为你正在制作类似于石头剪刀游戏的东西。并且您有三个视图,每个视图都包含一张带有空白卡图像的图像视图。并且您想要将石头,纸张和剪刀的图像添加为图像视图的叠加层。如果这是您想要做的,为什么不只是rockCardpaperCardscissorsCard自己UIImageViews并将图片设置为BalnkCard.png

let imageBlankCard = UIImage(named: "BlankCard.png")
rockCard.image = imageBlankCard
scissorsCard.image = imageBlankCard
paperCard.image = imageBlankCard