2017-03-05 174 views
0

我有六个imageviews,我将它们设置是这样的:removeFromSuperview功能无法正常工作

img1 img2 img3 img4 img5 img6 

但是当我用removeFromSuperview功能等imageviews不会出现找删除img1。例如,如果我删除img1,其他imageviews出现在对方:

img23456 

我不想使用hide功能,因为它们之间的空间将出现。在另一方面

' ' img2 img3 img3 img4 img5 img6 

,我要的是,如果img1移除(不含第一个空格):例如,如果我删除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() 
    } 
+0

这是什么语言,Swift?你是如何添加6个UIImageViews的:img1 img2 img3 img4 img5 img6?如果我在Swift中输入那样的话,我可以添加6个UIImageViews吗? – 2017-03-05 19:59:21

+0

我的语言是'快速'。 –

+0

@ S.M_Emamian为了更容易地帮助你并理解你在做什么,添加你的代码而不是img 1 img 2 img 3 img 4 ...截至目前,我认为没有人会理解你正在尝试做什么问题是什么。也许你也可以添加图片以及使用者界面发生的事情。 – 2017-03-05 20:01:56

回答

3

所以,问题是,如果你从你的SuperView删除IMG1UIImageView。您在连接到您删除会失败的人,因为他们连接到IMG1UIImageViewUIImageViews其余约束。

硬解:您需要更新/连接/添加约束每一个UIImageView,当你从上海华通过代码移除“链”的东西。

更好的解决方案:(最佳实践)

删除所有UIImageViews,并添加一个UICollectionView

添加一个UIImageView到小区,根本deleteadd细胞如你所愿,和UICollectionView处理所有的布局你

+1

更好的解决方案(和实际的最佳实践),使用更容易用于静态内容的“UIStackView”。 – deadbeef

+0

如何快速完成它:删除图像视图的所有约束,选择所有的图像视图,并做编辑 - >嵌入 - >堆栈视图 – deadbeef

+0

@deadbeef很好添加另一个选项作为UIStackView。但是,UIStackView支持** iOS 9.0 **>,因此:,调用一些只支持1版历史的实际最佳实践是**不是一种好的做法,它被称为选项 – 2017-03-05 20:28:39

0

@潜行的答案是解决这个问题的标准方式。

我有一个想法更加分享,这是我在我的应用程序使用。

充分利用spacingconstraints为眼前的左UIImageViewmultipliedconstant

然后取img的widthconstraintIBOutlet。然后改变你的其他部分这样的 - >

else{ 
     widthImg1.constant = 0 
} 

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

+0

我在我的答案中有2个解决方案,更新约束是其中之一:)然而,好的工作,你给了一个详细的例子和解决方案的代码和解释!会为此赞赏你。 – 2017-03-05 20:34:32

+1

感谢您的编辑。我将来会记住我的答案的质量。 – Naresh