我有六个图像视图,我将它们设置为:
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
我的布局:
更新
我的代码:
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 :(得分:3)
问题是,如果您从superView中删除 img1 UIImageView
。您对已移除的其他UIImageViews
的约束将失败,因为它们已连接到 img1 UIImageView
。
硬解决方案:当您通过代码从superView中删除“链”中的内容时,您需要为每个UIImageView
更新/连接/添加约束。
删除所有UIImageViews
并添加一个UICollectionView
。
在单元格中添加一个UIImageView
,根据需要添加delete
或add
个单元格,UICollectionView
将为您处理所有布局< /强>
答案 1 :(得分:0)
@ sneak的回答是解决这个问题的标准方法。
我还有一个想法要分享,我在我的应用中使用过。
将spacing
constraints
作为左侧multiplied
的{{1}} constant
。
然后获取img的UIImageView
IBOutlet
的{{1}}。然后像这样改变你的其他部分 - &gt;
width
现在间距也将变为零,因为它是一个乘以常数。