removeFromSuperview函数不能正常工作

时间:2017-03-05 19:55:10

标签: ios swift xcode

我有六个图像视图,我将它们设置为:

img1 img2 img3 img4 img5 img6

但是当我使用img1功能删除removeFromSuperview时,其他图片视图却无法显示。例如,如果我删除了img1,则其他图片视图会互相显示:

img23456

我不想使用hide函数,因为它们之间会出现空格。例如,如果我删除img1

'  ' img2 img3 img3 img4 img5 img6

另一方面,我想要的是删除img1(没有第一个空格):

img2 img3 img3 img4 img5 img6

我的布局:

enter image description here

更新

我的代码:

    if(self.job.wifi == "1")
    {
                    self.img_option_1.isHidden = false
        self.img_option_1.image = UIImage(named: "wififree")

    }else{
        self.img_option_1.removeFromSuperview()
    }

    if(self.job.apple_health == "1")
    {
        self.img_option_2.isHidden = false
        self.img_option_2.image = UIImage(named: "sib_noghrei")
    }else{
       // self.img_option_2.removeFromSuperview()
        self.img_option_2.removeFromSuperview()
    }

    if(self.job.wc == "1")
    {

        self.img_option_3.isHidden = false
        self.img_option_3.image = UIImage(named: "wc")
    }else{
        self.img_option_3.removeFromSuperview()
    }

    if(self.job.full_time == "1")
    {
        self.img_option_4.isHidden = false
        self.img_option_4.image = UIImage(named: "fulltime")
    }else{
        self.img_option_4.removeFromSuperview()
    }


    if(self.job.pos == "1")
    {

        self.img_option_5.isHidden = false
        self.img_option_5.image = UIImage(named: "pos")
    }else{
        self.img_option_5.removeFromSuperview()
    }

    if(self.job.parking == "1")
    {
        self.img_option_6.isHidden = false
        self.img_option_6.image = UIImage(named: "parking")
    }else{
        self.img_option_6.removeFromSuperview()
    }

2 个答案:

答案 0 :(得分:3)

问题是,如果您从superView中删除 img1 UIImageView。您对已移除的其他UIImageViews的约束将失败,因为它们已连接到 img1 UIImageView

硬解决方案:当您通过代码从superView中删除“链”中的内容时,您需要为每个UIImageView更新/连接/添加约束。

更好的解决方案:(最佳做法)

删除所有UIImageViews并添加一个UICollectionView

在单元格中添加一个UIImageView,根据需要添加deleteadd个单元格,UICollectionView为您处理所有布局< /强>

答案 1 :(得分:0)

@ sneak的回答是解决这个问题的标准方法。

我还有一个想法要分享,我在我的应用中使用过。

spacing constraints作为左侧multiplied的{​​{1}} constant

然后获取img的UIImageView IBOutlet的{​​{1}}。然后像这样改变你的其他部分 - &gt;

width

现在间距也将变为零,因为它是一个乘以常数。